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

Wil*_*ins 42 jquery document-ready

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

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

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

(function($){
    alert("self invoke");
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

这里首先发生自我调用,然后是文档,然后是窗口.是自调用技术被认为是准备()方法?

Nic*_*ver 96

第三个选项不是.ready()(或jQuery真正相关)的快捷方式,自我调用立即运行(一旦它出现在代码中),可能是你想到的捷径:

$(function(){
  alert("I'm a ready shortcut");
});
Run Code Online (Sandbox Code Playgroud)

传递函数$(func)是一种快捷方式$(document).ready(func);.在没有冲突的版本是这样的:

jQuery(function($) {
  //$ is jQuery
});
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 13

Nick Craver说得对,但我认为值得注意的是,在最后一个例子中,它根本没有用jquery做任何事情.jQuery作为参数传递给匿名函数,但该函数没有对它做任何事情.

最后一个例子相当于:

(function(){
    alert("self invoke");
})();
Run Code Online (Sandbox Code Playgroud)

显然,只要该代码行被命中并因此执行警报,这就是立即调用匿名函数.它根本不是在调用jQuery,这就是为什么Nick说得对,因为他说它绝对不是ready()方法.


Hec*_*rea 6

本文对前两个如何不同有一个很好的解释:

$(document).ready$(window).load

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

$(document).ready(function() {
  // executes when HTML-Document is loaded and DOM is ready
  alert("document is ready");
});
Run Code Online (Sandbox Code Playgroud)

窗口加载事件稍后在完整加载完整页面时执行,包括所有帧,对象和图像.因此,涉及图像或其他页面内容的功能应该放在窗口或内容标签本身的加载事件中.

$(window).load(function() {
  // executes when complete page is fully loaded, 
  // including all frames, objects and images
  alert("window is loaded");
});
Run Code Online (Sandbox Code Playgroud)