jQuery – $(document).ready和$(window).load之间有什么区别?

有什么区别

$(document).ready(function(){ //my code here }); 

 $(window).load(function(){ //my code here }); 

我想确保:

 $(document).ready(function(){ }) 

 $(function(){ }); 

 jQuery(document).ready(function(){ }); 

是相同的。

你能告诉我他们之间有什么不同和相似之处吗?

 $(document).ready(function() { // executes when HTML-Document is loaded and DOM is ready alert("document is ready"); }); $(window).load(function() { // executes when complete page is fully loaded, including all frames, objects and images alert("window is loaded"); }); 

查询3.0版本

打破更改:.load(),.unload()和.error()被删除

这些方法是事件操作的捷径,但有几个API限制。 事件.load()方法与ajax .load()方法冲突。 由于定义了DOM方法,因此.error()方法不能用于window.onerror。 如果需要通过这些名称附加事件,请使用.on()方法,例如将$(“img”).load(fn)更改为$(img).on(“load”,fn)。

 $(window).load(function() {}); 

应该改成

 $(window).on('load', function (e) {}) 

这些都是等价的:

 $(function(){ }); jQuery(document).ready(function(){ }); $(document).ready(function(){ }); $(document).on('ready', function(){ }) 

document.ready是一个jQuery事件,它在DOM准备就绪时运行,例如所有的元素都被find/使用,但不一定是所有的内容。
window.onload稍后(或在最坏的/失败的情况下同时发生)在图像等被加载时触发。 所以,如果你使用图像尺寸,你通常想用这个代替。

还读了一个相关的问题:
$(window).load()和$(document).ready()函数之间的区别

从jQuery API文档

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

在代码依赖于加载的资源的情况下(例如,如果需要图像的尺寸),代码应该被放置在load事件的处理程序中。


回答第二个问题 –

不,它们是相同的,只要你没有在冲突模式下使用jQuery。

就绪事件发生在加载HTML文档之后,而onload事件发生在稍后,当所有内容(例如图像)也被加载时。

onload事件是DOM中的标准事件,而ready事件特定于jQuery。 就绪事件的目的是在文档加载后尽早出现,以便为页面中的元素添加function的代码不必等待所有的内容加载。

这三个function是一样的。

 $(document).ready(function(){ }) 

 $(function(){ }); 

 jQuery(document).ready(function(){ }); 

这里$用于定义像$ = jQuery这样的jQuery

现在的区别在于

$(document).ready是加载DOM时触发的jQuery事件,所以在文档结构准备就绪时会触发它。

$(window).load事件在整个内容被加载后被激发,如页面包含图像,CSS等

$(document).ready()$(window).load()函数之间的区别在于$(document).ready() $(window).load()包含的代码将在整个页面(图像,iframe,样式表等)被加载,而文档就绪事件在加载所有图像,iframe等之前触发,但在整个DOM本身准备就绪之后。


 $(document).ready(function(){ }) 

 $(function(){ }); 

 jQuery(document).ready(function(){ }); 

上述3个代码没有区别。

它们是等价的,但如果其他JavaScript框架使用相同的美元符号$作为快捷方式名称,则可能会面临冲突。

 jQuery.noConflict(); jQuery.ready(function($){ //Code using $ as alias to jQuery }); 

我想你应该看看这篇文章: $(document).ready()的6个不同types的例子

就绪事件总是执行在唯一的HTML页面加载到浏览器和function执行….但加载事件执行时的所有页面内容加载到浏览器的页面… ..我们可以使用$或jQuery当我们在jQuery脚本中使用noconflict()方法…

 $(document).ready(function(e) { // executes when HTML-Document is loaded and DOM is ready console.log("page is loading now"); }); $(document).load(function(e) { //when html page complete loaded console.log("completely loaded"); });