$(document).ready(initialize)和$(document).on('ready',initialize)之间有什么区别

Lor*_*ard 16 javascript jquery

有什么区别:

  $(document).ready(initialize); 
Run Code Online (Sandbox Code Playgroud)

  $(document).on('ready',initialize); 
Run Code Online (Sandbox Code Playgroud)

对我来说,他们似乎以同样的方式工作.

ant*_*njs 18

$(document).on('ready',initialize); 如果在执行文件时DOM已经就绪,则无法工作.

$(document).ready() 对此有一个特殊的处理:它确保它总是被调用


Fel*_*ing 7

tl;博士:

  • $(document).on('ready', ...)不推荐使用,因为它在完全解析DOM后不执行绑定的回调.获取事件对象作为第一个参数.

  • $().ready()获得传递jQuery作为第一个参数的引用.


$(document).on('ready',initialize);

绑定ready事件处理程序document,就像您期望从任何其他事件处理程序.从jQuery 1.8开始,不推荐使用它来监听DOM ready:

从jQuery 1.8开始$(document).bind("ready", handler),也不赞成使用.此行为与ready方法类似,但如果ready事件已经触发,则尝试.bind("ready")绑定处理程序将不会执行.以这种方式绑定的就绪处理程序在被上述其他三种方法绑定后执行.

请注意,这ready是一个自定义事件,由jQuery在内部触发.这也意味着您可以手动触发它,这可能会搞砸.


$(document).ready(initialize);

没有真正绑定事件处理程序.jQuery.fn.ready是一个专用的方法来注册在完全解析DOM时运行的回调.jQuery正在将回调添加到promise对象中,并且传递给哪个选择器并不重要$.

此外,回调传递对jQuery对象的引用而不是事件对象.


源代码的这一部分很好地表明,这样注册的回调处理方式不同:

// If there are functions bound, to execute
readyList.resolveWith(document, [jQuery]);

// Trigger any bound ready events
if (jQuery.fn.trigger) {
    jQuery(document).trigger("ready").off("ready");
}
Run Code Online (Sandbox Code Playgroud)