我只是在摆弄一些 JavaScript,发现了一些让我有点困惑的东西。
我已将脚本文件的链接添加到文档的标题中,就在 jQuery 的链接之后。
如果我放入测试文件:
(function($){
$("#thing").mouseover(function(){alert("woo");});
})(jQuery);
鼠标悬停事件不会触发该函数。
但是,如果我添加
(function($){
$(document).ready(function(){
$("#thing").mouseover(function(){alert("woo");});
});
})(jQuery);
该事件确实有效。
是否只是因为没有 $(document).ready ,当我的自执行函数运行时,DOM 尚未完成加载,因此还没有 #thing 来附加该函数,或者还有其他解释吗?
最佳答案
I've added a link to a script file into the header of a document
这就是重点。
通常人们将脚本文件放在文档的页脚中以优化加载页面的过程,因此不需要等待文档准备好基于已加载的 DOM 执行某些操作(如果您在页脚,您已经加载了其余部分 - 除非您有一些异步加载的内容)。
尝试将脚本文件放在页脚中,您将不需要 $(document).ready。
总结:在你的情况下你需要它,因为当脚本开始执行时你还没有开始寻找 DOM,并且当时无法找到该元素。
关于javascript - 为什么需要将 $(document).ready 添加到自执行函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676129/