$(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"); }