为什么在标记之后需要$(document).ready?

为什么在标记之后需要$(document).ready

如果我们不使用$(document).ready会发生什么?

$(document).ready是javascript代码,因此必须在元素中编写并在加载jQuery之后。

如果你不写$(document).ready ,你的代码将不会等待DOM完全加载并立即执行javascript代码。

如果你在中使用脚本来使用/操作来自DOM的一些元素,你需要ready ,否则你将得到null / undefined 。 如果您在的末尾使用脚本,那么在加载所有元素时您将是安全的。

引用来自jQuery Docs

虽然JavaScript在呈现页面时提供了用于执行代码的加载事件,但在完全接收到所有资产(如图像)之前,不会触发此事件。 在大多数情况下,只要完全构造DOM层次结构,就可以运行脚本。 传递给.ready()的处理程序保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。 使用依赖于CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素很重要。

如果代码依赖于加载的资源(例如,如果需要图像的维度),则应将代码放在load事件的处理程序中。

例? 当然!

在Head没有准备好

     Document        

当我们使用javascript时,为什么$(document).ready确实需要在标签之后。

事实并非如此。

如果我们不使用$(document).ready

首先,了解人们使用ready :它用于延迟传递给它的函数中的代码,直到jQuery调用该函数,jQuery在认为文档完全加载时会这样做。

script标记中的JavaScript代码会立即运行。 如果script标记位于它引用的元素上方 ,则脚本运行时该元素将不存在:

   

div不会显示,因为代码运行时它不存在。 所以人们ready推迟他们的代码。

如果您控制script标记的位置,则有更好的方法:只需将script标记放在文档的末尾,就在结束标记之前:

     

代码运行时, script标记上方定义的所有元素都将存在。 无需ready

加载DOM (文档对象模型)时发生就绪事件。

因为此事件发生在文档准备好之后,所以它是拥有所有其他jQuery事件和函数的好地方。

 //Use ready() to make a function available after the document is loaded: $(document).ready(function(){ $("button").click(function(){ $("p").slideToggle(); }); }); 

就像上面的例子一样。 ready()方法指定ready事件发生时会发生什么。

直接引用Learn jQuery

在文档“准备就绪”之前,页面无法安全操作。 jQuery为您检测这种准备状态。 包含在$(document).ready()中的代码只有在页面文档对象模型(DOM)准备好执行JavaScript代码后才会运行。 包含在$(window).load(function(){…})中的代码将在整个页面(图像或iframe)(而不仅仅是DOM)准备好后运行。