我看到人们在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事件处理程序.
以下所有三种语法都是等效的:
- $(文件).就绪(句柄)
- $().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)