我还需要$(document).ready(function(){})吗?

时间:2012-04-24 21:10:59

标签: javascript jquery

我在javascript中开发了几个月,我在所有脚本的开头都使用了$(document).ready(function(){。我注意到其他人不会在他们的脚本中使用它,但我似乎无法让它在没有它的情况下工作。我想保持我的代码清洁,但对于我所有的谷歌搜索,我似乎无法弄清楚如何摆脱它。

我知道它会告诉浏览器在页面加载后立即执行我的脚本但是我可以设置全局,这样我就不需要在页面加载时明确告诉浏览器执行我的每个脚本了吗?或者,在我的html文件中脚本所在的位置是一个更全局的问题?

3 个答案:

答案 0 :(得分:7)

你需要document.ready可能是因为你在加载之前与DOM交互。脚本如何操作那些不存在的元素?

如果您将脚本放在文件的末尾,则不需要它。对于许多Javascript文件来说这也是一种很好的做法,因为它们可能需要一些时间来处理(特别是如果它们是在外部托管的)。将它们放在文件的末尾speeds up the page load time

答案 1 :(得分:6)

所有$(document).ready(function() { ... });$(function() { ... });都会等待文档准备好进行操作。如果您的脚本是内联的,或者在$(document).ready(function() { ... });部分,则应使用$(function() { ... });<head />,因为JavaScript会按照页面上显示的顺序执行。

要取消$(document).ready(function() { ... });$(function() { ... });,只需在结束</body>标记之前将所有内容下移到页面底部。

将脚本置于底部无论如何都是最佳实践。对于此最佳做法和其他最佳做法,建议您查看Html5BoilerplateYahoo! Best Practices

答案 2 :(得分:1)

$(document).ready()约定是jQuery的一部分,而不仅仅是JavaScript。来自他们的'documentation on the ready function

  

这是第一个了解jQuery的事情:如果你想让一个事件在你的页面上运行,你应该在$(document).ready()函数中调用它。一旦加载DOM并加载页面内容,它内部的所有内容都将加载。

是的,这是必需的。 jQuery确实附带了一个简写,所以你可以做到以下几点:

$(function() {
  //jquery code
};
相关问题