在jQuery中说文档的不同方式?

时间:2011-08-06 22:07:18

标签: javascript jquery

这两者是否相同,即说准备文件的方式:

$(function() {
  //
});

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

或两者之间是否存在差异,如果是,那么何时应该使用哪个?

3 个答案:

答案 0 :(得分:9)

第一个是.ready()的快捷方式。

当你试图调用一个不可调用的对象时,第二个就是无效。

你可能意味着这个:

// v--------no $ at the beginning
    (function( $ ) {

       // simply a new lexical environment with a 
       //        local $ parameter pointing to jQuery

    })(jQuery);

......虽然它与DOM准备无关。

第一个例子中有一个变体,它将两者结合起来:

jQuery(function( $ ) {

  // DOM ready, and creates a local $ parameter pointing to jQuery

});

答案 1 :(得分:1)

他们两个都不一样。

第一个代码块用于在文档就绪时执行函数,当我们想要立即执行代码块而不等待加载其余代码时,使用第二个代码块。但是在代码的第二部分中存在一些错误。它应该如下。

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

答案 2 :(得分:0)

这个不正确:

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

您正在将函数传递给$(...),然后调用结果。但是,$(...)的结果是一个jQuery对象,它不是一个函数。你可能会这样看得更好:

$(

    function($) {
        //
    }

)

(jQuery);

通常,document.ready有三个版本,它们彼此相同:

$(function() {...});

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

$().ready(function() {...});