有什么区别:
$(document).ready(initialize);
和
$(document).on('ready',initialize);
对我来说,他们似乎也以同样的方式工作。
答案 0 :(得分:18)
$(document).on('ready',initialize);
将无效。
$(document).ready()
对此进行了特殊处理:它确保始终调用
答案 1 :(得分:7)
<强> TL;博士强>:
$(document).on('ready', ...)
已弃用,因为在完全解析DOM后它不会执行绑定的回调。获取事件对象作为第一个参数。
$().ready()
作为第一个参数传递了对jQuery
的引用。
$(document).on('ready',initialize);
将ready
事件处理程序绑定到document
,就像您期望从任何其他事件处理程序那样。 Using this to listen to DOM ready is deprecated as of jQuery 1.8:
从jQuery 1.8开始,还有
$(document).bind("ready", handler)
,已弃用。这与ready
方法的行为类似,但如果ready事件已经触发,并且您尝试.bind("ready")
,则不会执行绑定的处理程序。绑定此方式的就绪处理程序将在上述其他三种方法绑定后执行。
请注意,ready
是自定义事件,triggered by jQuery internally。这也意味着你可以手动触发它,这可能搞砸了。
$(document).ready(initialize);
没有真正绑定事件处理程序。 jQuery.fn.ready
is a dedicated method注册在完全解析DOM时运行的回调。 jQuery正在将回调添加到promise对象,并且传递给$
的选择器无关紧要。
此外,回调传递了对jQuery对象的引用而不是事件对象。
This part of the source很好地表明,这样注册的回调处理方式不同:
// 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");
}