`$(window).load(function(){})`和`$(function(){})之间有什么区别?

时间:2012-06-07 14:07:47

标签: jquery dom window-load

我在我的项目中使用$(window).load(function(){});,直到某个地方我看到有人说我们可以使用$(function(){});并且他们的表现相同。
但是现在我有更多经验,我注意到它们并不相同。我注意到在第二段代码之后,第一件作品开始了一点点 我只是想知道有什么区别?

4 个答案:

答案 0 :(得分:10)

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

将等到文档加载(加载DOM树),直到整个窗口加载为止。例如它不会等待图像,css或javascript完全加载。一旦DOM加载了所有HTML组件和事件处理程序,文档就可以处理了,然后$(document).ready()将完成

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

等待加载整个窗口。加载整个页面时,只完成$(window).load()。因此很明显$(document).ready(function(){})在$(window).load()之前完成,因为填充组件(比如images,css)需要更多的时间才能加载DOM树。

因此$(function(){});不能用作$(window).load(function(){});

的替代品

答案 1 :(得分:4)

来自jQuery docs本身。

大多数Javascript程序员最终做的第一件事就是在他们的程序中添加一些代码,类似于:

window.onload = function(){ alert("welcome"); }

其中包含您希望在加载页面时运行的代码。但问题是,在完成所有图像下载(包括横幅广告)之前,Javascript代码不会运行。首先使用window.onload的原因是当你第一次尝试运行你的代码时,HTML'文档'还没有完成加载。

为了避免这两个问题,jQuery有一个简单的语句来检查文档并等待它准备好被操作,称为就绪事件:

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

现在,

$(window).load(function(){});等于window.onload = function(){ alert("welcome"); }

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

的快捷方式

我认为,这清除了一切:)

答案 2 :(得分:2)

$(window).load根据我的经验等待,直到所有包含图片的内容都在加载之前运行,因为$(function() {});具有与$(document).ready(function() {});相同的行为

如果我错了,请有人纠正我。

答案 3 :(得分:0)

第二个是/ $(document).ready()的快捷方式,应该在window的加载事件之前运行。

请注意,$(document).ready()是将某些内容绑定到document加载的首选方式;还有其他一些方法可以像你展示的那样,但这是首选。