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

有什么区别:

$(document).ready(initialize); 

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

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

$(document).on('ready',initialize); 如果在执行文件时DOM已准备就绪,则无效。

$(document).ready()对此进行了特殊处理:它确保始终调用它

tl;博士

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

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


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

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

还有$(document).bind("ready", handler)从jQuery 1.8开始不推荐使用 。 这与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"); }