3

我已经用 javascript 开发了几个月,并且在我$(document).ready(function(){所有脚本的开头一直在使用。我注意到其他人不会在他们的脚本中使用它,但如果没有它我似乎无法让我的工作。我想让我的代码更干净,但是对于我所有的谷歌搜索,我似乎无法弄清楚如何摆脱它。

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

4

3 回答 3

7

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

如果您将脚本放在文件末尾,则不需要它。对于许多 Javascript 文件,这样做也是一种很好的做法,因为它们可能需要时间来处理(特别是如果它们是在外部托管的)。将它们放在文件末尾通常会加快页面加载时间

于 2012-04-24T21:12:53.157 回答
6

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

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

无论如何,将脚本放在底部确实是一种最佳实践。对于这个和其他最佳实践,我建议您查看Html5BoilerplateYahoo! 最佳实践

于 2012-04-24T21:12:37.493 回答
1

$(document).ready()约定是 jQuery 的一部分,而不仅仅是 JavaScript。从他们关于准备功能的文档中

这是了解 jQuery 的第一件事:如果你想让一个事件在你的页面上工作,你应该在 $(document).ready() 函数中调用它。它里面的所有东西都会在 DOM 被加载并且页面内容被加载之前加载。

所以是的,它是必需的。jQuery 确实为此提供了简写,因此您可以执行以下操作:

$(function() {
  //jquery code
};
于 2012-04-24T21:14:32.173 回答