为什么在标记之后需要$(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)准备好后运行。