jQuery的ready()方法的快捷方式

问题描述 投票:44回答:3

我已经看到了ready()方法的一些快捷方式,并且想知道哪个首先发生,因为我的测试结果使我感到困惑。。

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

$(window).load(function(){
    alert("window ready");
});

(function($){
    alert("self invoke");
})(jQuery);

这里先进行自我调用,然后进行文档处理,然后进行窗口处理。 self invoke技术是否被视为ready()方法?

jquery document-ready
3个回答
99
投票

第三个选项不是.ready()的快捷方式(或与jQuery有关的快捷方式),自我调用运行立即(只要它出现在代码中),this可能是您的快捷方式正在考虑:

$(function(){
  alert("I'm a ready shortcut");
});

将功能传递到$(func)$(func)的快捷方式。 $(document).ready(func);版本如下所示:

no-conflict

13
投票

尼克·克雷弗(Nick Craver)的话是正确的,但我认为值得注意的是,在最后一个示例中,它实际上根本没有对jquery做任何事情。 jQuery作为参数传递给匿名函数,但该函数没有对其执行任何操作。

最后一个示例等效于立即调用的函数表达式(IIFE):

jQuery(function($) {
  //$ is jQuery
});

并且很明显,这只是在该行代码被点击并立即发出警报时立即调用匿名函数。根本就没有调用jQuery,这就是为什么尼克在说绝对不是ready()方法时是对的。


6
投票

(function(){ alert("self invoke"); })(); 对前两个有何不同有很好的解释:

[This article vs. $(document).ready] >>

jQuery提供了两种强大的方法来执行代码和附加事件 处理程序:$(window).load$(document).ready。准备好文件 加载HTML文档并且DOM为 准备好,即使尚未加载所有图形。如果你想 在窗口加载之前为某些元素挂起事件,然后 $(window).load是正确的位置。

$(document).ready    

当整个页面为 满载,包括所有帧,对象和图像。因此 与图像或其他页面内容有关的功能应放置 在窗口或内容标签本身的加载事件中。

$(document).ready(function() {
  // executes when HTML-Document is loaded and DOM is ready
  alert("document is ready");
});
© www.soinside.com 2019 - 2024. All rights reserved.