不言自明,我希望。
回答
您的jQuery选择器将随机地错过任何元素,因为它尚未加载(通过浏览器)。
当脚本从浏览器到浏览器,页面到页面运行时,这将是不可预知的。
$(document).ready()是jQuery确保您希望在页面加载上运行的代码在浏览器中同时运行的方式。
它还提供了一种机制来堆叠不同的函数以在页面加载上运行。如果您不使用它并且您有多个onLoad分配,则只会添加最后一个实际运行的分配。
$(document).ready()实际上在onLoad事件触发前运行,通常 - 它在DOM加载后立即运行,而onLoad也等待所有图像等在它下载之前下载。 – 2009-06-25 19:13:29
当您在DOM中选择元素时,它们有时会工作,并且它们有时不起作用。
这只取决于他们是否已加载。
但是,如果您在文档的最末尾处插入脚本,它通常会没问题。 (从那时起,它应该已经加载了所有的东西)。
这是学习jQuery的第一件事:如果您希望事件在您的页面上工作,您应该在$(document).ready()函数内调用它。一旦DOM被加载并且在加载页面内容之前,它内部的所有东西都会加载。
$(document).ready(function() {
// put all your jQuery goodness in here.
});
$(document).ready()函数比其他获取事件的方法有很多优点。首先,您不必在HTML中添加任何“行为”标记。你可以将你所有的JavaScript/jQuery分离到一个单独的文件中,它更易于维护,并且可以避开内容。当我将鼠标悬停在链接上时,我从未喜欢在状态栏中看到所有这些“javascript:void()”消息。当您将事件直接附加到标签内时会发生这种情况。
在使用传统JavaScript的某些页面上,您会在标签中看到“onload”属性。问题在于它仅限于一个功能。哦,是的,它再次为内容添加了“行为”标记。 Jeremy Keith的出色书籍DOM Scripting向我展示了如何为单独的JavaScript文件创建addLoadEvent函数,以允许在其中加载多个函数。但它需要一些相当简单的代码。另外,它在窗口加载时触发这些事件,这导致了$(document).ready()的另一个优点。使用$(document).ready(),你可以让你的事件加载或启动,或者在窗口加载前让你想要它们做的任何事情。只要DOM被浏览器注册,就可以尽早将其粘贴在括号内的所有内容都准备就绪,可以在用户第一次看到页面元素时立即隐藏并显示效果和其他内容。
从http://docs.jquery.com/Tutorials:Introducing_ $(文件)。就绪()引用
Bassicly使用这个基本规则:
如果你的代码涉及到DOM包装你的代码在$(文件)。就绪()。如果它不涉及DOM,那么不要将它包装在$(document)中。ready()
如果未包装它,它只是普通的旧JavaScript,做你想做的事情,但会加载jQuery库,很难说。
有使用
$(document).ready (function()) // or $(function())
1主要有两个原因)它确保内的代码只运行一次的DOM完全加载(这不包括加载图像,Flash或其他资源,只是从HTML构建的DOM)。这意味着您可以将JavaScript放在HTML中的任何位置,而不是放在底部(使用香草JavaScript是唯一可以保证它可以在整个DOM上工作而不是在当前加载的位置)。除非你使用window.onload事件,这也保证了这一点,但只能使用一次。这使我想到了第二点;
2)它允许您在页面加载时触发多个函数,而不是使用使用香草javascript时使用的window.onload。这很好,因为它意味着你不必(a)编写你自己的函数来照顾它,b)担心检查是否已经有来自另一个库的onload函数,c)花费几年的时间去调试只是发现你的window.onload被别人的代码覆盖了。
加分:3)它看起来很酷,不是吗? :P
其他说明:如果您没有使用或操作DOM,那么您的代码不需要进入$(document).ready()函数内部。
把你的javascript文件放在html的底部,就在< /正文>之前,它会增加加载的速度 - 实际上速度并不快,但浏览器会在HTML之后加载JS,因此可以启动在JS加载时呈现HTML。这又意味着用户的屏幕上会出现比<头>中的脚本早一秒的事件 - 并且在网络中,分割秒数:)
- 1. JQuery没有在Document Ready上执行
- 2. 为什么$(document).ready(function()不工作,但jQuery(document).ready(function($)是?
- 3. 为什么jQuery有时需要$(document).ready?
- 4. $(document).ready() - 它是如何执行的?
- 5. JQuery - $(document).ready()执行BEFORE元素加载
- 6. jQuery(document).ready和'''''
- 7. jQuery(document).ready(function($)
- 8. jQuery中的jQuery(function($){})和$(document).ready(function(){})有什么区别
- 9. $(window).load和$(document).ready?有什么区别?
- 10. 与$(document).ready()有什么不同?
- 11. $(document).ready()没有为ajax加载的内容执行
- 12. 发行$(document).ready
- 13. jQuery $(document).ready()not firing
- 14. 在jQuery Mobile中做$(document).ready的正确方法是什么?
- 15. 什么是'$(document).ready()'的非jQuery等价物?
- 16. 为什么我不能使用onClick在jQuery $(document).ready函数中执行函数?
- 17. 等待head.ready()和$(document).ready(),然后执行
- 18. 何时执行$(document).ready回调函数?
- 19. 为什么我的$(document).ready不工作?
- 20. jQuery $(function(){})和$(document).ready是否一样?
- 21. 什么时候应该使用$(document).ready?
- 22. 使用什么来代替$(document).ready();?
- 23. jQuery(document).ready()不会触发
- 24. ASP.Net,jQuery - $(document).ready(function()not firing
- 25. jQuery(document).ready()+等待焦点
- 26. IE7 jQuery(document).ready()问题
- 27. setTimeOut没有在$(document).ready()中工作
- 28. 什么是网站跟踪软件缺陷/缺陷?
- 29. 为什么我需要将$(document).ready添加到自动执行的函数中?
- 30. JavaScript执行从函数声明开始而不是$(document).ready()?
因此,如果我不关心它何时运行,它就是完全合法?我希望它会比包装在$(document).ready()中的版本更早运行。 – Larsenal 2009-06-25 17:56:56
如果它不涉及DOM,那么我确定可以在ready()之前运行。 – 2009-06-25 17:58:04