jQuery页面加载

时间:2010-02-09 20:33:25

标签: jquery

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

第一

(function($) {

})(jQuery);

第二

$(document).ready(function(){

});

第三

$(function(){

}());

第四

jQuery(function($) { 

}); 

第五

(function(){

})();

2 个答案:

答案 0 :(得分:12)

更新他更改了问题中的来电列表,因此我正在更新以匹配。

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

来自the jQuery API reference

  

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

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

所以虽然这三个做同样的事情,但避免第二个。

在jQuery 1.3中,$()等于$(document)This is no longer true in 1.4

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

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

(function(){
    alert("Hi!");
})();

与此相同:

alert("Hi!");

答案 1 :(得分:4)

1st - 将$分配给jQuery仅在括号内使用(无冲突版本) 第二个是normaln版本,第三个是速记:)

更多:http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Overriding_the_.24-function

编辑:哦,是的,简写是:

$(function() {
  // your code
});

(在function()括号后没有括号)

修改:经过长时间阅读我自己的链接后,似乎第一个可能只包裹部分代码,其中$符号被分配给jQuery,但你仍然需要使用$(document).ready()

编辑:至于更新列表:第5种:检查其他答案,我不知道该类型。

jQuery(function($){

});

然而,第4个用于:1。将$附加到jQuery,临时重载(括号内)任何框架,其中使用$简写使用全局(即原型)和ALSO是document.ready声明。