$(document).ready简写

时间:2011-05-14 18:57:46

标签: javascript jquery document-ready shorthand

以下是$(document).ready的缩写吗?

(function($){

//some code

})(jQuery);

我看到这种模式使用了很多,但我找不到任何引用。如果它是$(document).ready()的简写,是否有任何特殊原因可能无效?在我的测试中,似乎总是在准备好的事件之前开火。

8 个答案:

答案 0 :(得分:511)

简写是:

$(function() {
    // Code here
});

答案 1 :(得分:243)

$(document).ready(handler)的简写是$(handler)(其中handler是一个函数)。请参阅here

您问题中的代码与.ready()无关。相反,它是一个立即调用的函数表达式(IIFE),其中jQuery对象作为其参数。其目的是将至少$变量的范围限制为它自己的块,这样就不会引起冲突。您通常会看到jQuery插件使用的模式,以确保$ == jQuery

答案 2 :(得分:84)

正确的简写是:

$(function() {
    // this behaves as if within document.ready
});

您发布的代码......

(function($){

//some code

})(jQuery);

...创建一个匿名函数并立即执行它,jQuery作为arg $传入。所有它有效地做的是获取函数内部的代码并像平常一样执行它,因为$已经是jQuery的别名。 :d

答案 3 :(得分:16)

这不是$(document).ready()的简写。

您发布的代码在内部代码中打包,并使jQuery可用$而不会污染全局命名空间。当你想在一个页面上同时使用prototype和jQuery时,可以使用它。

此处记录:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression

答案 4 :(得分:12)

这些特定行是jQuery插件的常用包装器:

“...为了确保您的插件不会与可能使用美元符号的其他库发生冲突,最好将jQuery传递给自动执行函数(闭包),将其映射到美元符号,这样它不能被执行范围内的另一个库覆盖。“

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

来自http://docs.jquery.com/Plugins/Authoring

答案 5 :(得分:10)

准备好的多框架安全速记是:

jQuery(function($, undefined) {
    // $ is guaranteed to be short for jQuery in this scope
    // undefined is provided because it could have been overwritten elsewhere
});

这是因为jQuery不是唯一使用$undefined变量的框架

答案 6 :(得分:0)

使用更短的变体

$(()=>{

});

其中$代表jQuery,而()=>{}则称为'arrow function',它从闭包中继承了this。 (因此,在this中,您可能会使用window而不是document。)

答案 7 :(得分:-1)

这个怎么样?

(function($) { 
   $(function() {
     // more code using $ as alias to jQuery
     // will be fired when document is ready
   });
})(jQuery);