jQuery页面加载

sup*_*cal 16 jquery

我看到人们在jQuery中使用所有这些不同的技术.我知道第二种技术将在页面加载时运行.但第1和第3功能什么时候会发射?插件中使用的第三种技术是为了避免冲突吗?但这肯定会在页面加载之前触发吗?我还添加了第四种技术.我想知道你应该/不应该使用每种技术.如果他们中的任何一个是假的,请告诉我!

1

(function($) {

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

第2

$(document).ready(function(){

});
Run Code Online (Sandbox Code Playgroud)

第3

$(function(){

}());
Run Code Online (Sandbox Code Playgroud)

第四

jQuery(function($) { 

}); 
Run Code Online (Sandbox Code Playgroud)

第5

(function(){

})();
Run Code Online (Sandbox Code Playgroud)

Cra*_*ntz 12

更新他已经更改了问题中的调用列表,所以我正在更新以匹配.

第一个是避免与可能分配的其他库冲突的黑客攻击$.这是不是一个ready处理程序.第二个和第三个是ready事件处理程序.

jQuery API参考:

以下所有三种语法都是等效的:

  • $(文件).就绪(句柄)
  • $().ready(处理程序)(不建议这样做)
  • $(句柄)

因此,虽然这三个做同样的事情,避免第二个.

在jQuery 1.3中,$()等于$(document).这在1.4中已不再适用.

第四个看起来像我的语法错误.它本质上分配了一个新的就绪处理程序,但它传递了一个带有一个名为的参数的函数$.由于这是一个事件处理程序,jQuery将在第一个参数中传递事件信息.您通常不想$表示事件信息.

第五个定义了一个新函数,然后立即调用它,不传递任何参数.所以这:

(function(){
    alert("Hi!");
})();
Run Code Online (Sandbox Code Playgroud)

意思与此相同:

alert("Hi!");
Run Code Online (Sandbox Code Playgroud)