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

Javascript 我还需要$(document).ready(function(){})吗?,javascript,jquery,Javascript,Jquery,我已经用javascript开发了几个月,并且一直在使用$(document).ready(function()){在我所有脚本的开头。我注意到其他人在他们的脚本中不使用这个,但没有它我似乎无法让我的脚本正常工作。我想保持我的代码更干净,但对于我所有的谷歌搜索,我似乎不知道如何摆脱它 我知道它会告诉浏览器在页面加载后立即执行我的脚本,但是我是否可以设置一些全局设置,以便在页面加载时不需要显式地告诉浏览器执行我的每个脚本?或者脚本在html文件中的位置是否是一个更全局的问题?All$(docume

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

我知道它会告诉浏览器在页面加载后立即执行我的脚本,但是我是否可以设置一些全局设置,以便在页面加载时不需要显式地告诉浏览器执行我的每个脚本?或者脚本在html文件中的位置是否是一个更全局的问题?

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

要删除
$(document).ready(function(){…});
$(function(){…});
,只需在关闭
标记之前,将脚本向下移动到页面底部即可


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

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

如果您将脚本粘贴在文件末尾,您将不需要它。对许多Javascript文件这样做也是一种很好的做法,因为它们可能需要时间来处理(特别是在外部托管的情况下)。经常将它们放置在文件末尾。

the
$(document).ready()
约定是jQuery的一部分,而不仅仅是JavaScript

这是了解jQuery的第一件事:如果您想让事件在页面上工作,应该在$(document).ready()函数中调用它。加载DOM后,在加载页面内容之前,它内部的所有内容都将加载

是的,这是必需的。不过jQuery提供了一个速记,因此您可以执行以下操作:

$(function() {
  //jquery code
};

将脚本标记粘贴在
之前,您不需要准备文档。您可以使用速记版本
$(function(){
。“不仅仅是JavaScript”?您的意思是什么?@FlorianMargaine-the
$(document).ready()
函数是由jQuery提供的,虽然jQuery本身是用JavaScript实现的,但显然不能在不包含jQuery库的网页上使用jQuery功能。在所有浏览器中,没有jQuery的最简单的等价物是一个普通的
onload
事件处理程序。是的,我知道,但是@GSto的句子让我看起来“不仅仅是javascript”,这就是为什么我仍在犹豫是否应该投否决票的原因:p
,在您的所有内容加载后…
这不是严格意义上的正确。Document.Ready在浏览器注册DOM后立即启动,这并不意味着您的所有内容都已加载。通常情况下,当Document.Ready启动时,图像尚未加载。另一个很好的做法是在html中根本不包含任何脚本,而是引用一个包含页面脚本的脚本文件。使用不显眼的脚本会产生更干净的html。@FrançoisWahl-对,这是真的,我将进行编辑。就1脚本文件而言,这也是真的,在我提到的.Ev链接中讨论过当然,你仍然可以从CDN(modernizr.js、jquery.js、jquery ui.js)获取大约2到3个外部脚本文件,然后在本地获取2个脚本文件(plugins.js和script.js)。我就是这样做的。@Scott“在结束之前”我一直都做得不对,天哪,我总是把它放在…:(将JavaScript放在最后的做法——这在我所知道的所有浏览器中都能可靠地工作——在技术上是不能保证的。然而,在这一点上,如果浏览器不以这种方式工作,那将是自杀,这归结为理论上的优点,而不是[必要的]实际应用…@pst这是一些甚至存在于更新的browsers@ajax333221该答案包含缺少的答复。
或文档
onload
/DOM ready事件都不能保证以与异步操作相关的任何顺序触发(获取图像或异步脚本元素,甚至外部CSS加载)。既然在这两种情况下顺序都没有定义,为什么选择X而不是Y呢?(该测试也会产生误导,因为图像将被缓存。)