为什么我需要将$(document).ready添加到自执行函数中?
我只是搞乱了一些javascript而且我遇到了一些困扰我的东西。
我已经在链接到jQuery之后添加了一个脚本文件的链接到文档的标题中。
如果我放在测试文件中:
(function($){ $("#thing").mouseover(function(){alert("woo");}); })(jQuery);
mouseover事件不会触发该function。
但是,如果我添加
(function($){ $(document).ready(function(){ $("#thing").mouseover(function(){alert("woo");}); }); })(jQuery);
该活动确实有效。
是不是没有$(document)。在我的自动执行函数运行时,DOM还没有完成加载,所以没有#thing尚未附加函数或是否有其他解释?
我已经将脚本文件的链接添加到文档的标题中
这就是重点。
通常人们将脚本文件放在文档的页脚中以优化加载页面的过程,因此它不需要等待文档准备好基于已经加载的DOM执行某些操作(如果你在页脚中,那么你已经加载了其余的 – 除非你有一些内容加载异步)。
尝试将脚本文件放在页脚中,您将不需要$(document).ready。
简介:在您的情况下,您需要它,因为当脚本开始执行时,您还没有开始寻找DOM,并且在那段时间内找不到该元素。
这是因为文档就绪等待,直到文档完全加载才执行。
任何绑定到DOM元素的东西必须在文档完全加载时完成,否则这些事件处理程序绑定将尝试绑定到尚不存在的DOM元素。
是的,你回答了自己的问题。
$( document ).ready()
仅在页面文档对象模型(DOM)准备好执行JavaScript代码时运行
它等待整个HTML除了图像。
有时你注意到你收到了一个错误“$ is not defined.”
那么在这种情况下你可以使用$( document ).ready()
您可以移动$
以使其工作
$(function(){ $("#thing").mouseover(function(){alert("woo");}); });
演示
说明$(function(){});
相当于$(document).ready(function(){});
在jQuery中
文档就绪function等待页面加载,然后执行其中的任何内容。 这可以防止页面加载前的不成熟操作。 作为拇指规则,请记住这一点,
$(document).ready(function(){ //jQuery code goes here });
显然这对我有用
... @section scripts{ }
它基本上是一个立即执行的function。