是以下简写$(document).ready
吗?
(function($){
//some code
})(jQuery);
我看到这种模式使用了很多东西,但是我找不到任何引用。如果它是的简写$(document).ready()
,是否有任何特定原因可能不起作用?在我的测试中,它似乎总是在ready事件之前触发。
是以下简写$(document).ready
吗?
(function($){
//some code
})(jQuery);
我看到这种模式使用了很多东西,但是我找不到任何引用。如果它是的简写$(document).ready()
,是否有任何特定原因可能不起作用?在我的测试中,它似乎总是在ready事件之前触发。
Answers:
的简写$(document).ready(handler)
是$(handler)
(handler
函数在哪里)。看这里。
您问题中的代码与无关.ready()
。相反,它是一个以jQuery对象为参数的立即调用的函数表达式(IIFE)。其目的是将$
变量的范围至少限制在其自己的块中,以免引起冲突。您通常会看到jQuery插件用于确保的模式$ == jQuery
。
iife
,或跳至Cowboy Alman著名的博客文章。详细信息...
简写为:
$(function() {
// Code here
});
$
。可能想添加进来。这对jQuery(function($, undefined) {});
$(document).ready(function(){ });
$
免费获得第一个参数只是有用的。
这不是的简写$(document).ready()
。
您发布的代码将内部代码装箱,并使jQuery可用而$
不会污染全局名称空间。当您要在一页上同时使用原型和jQuery时,可以使用此方法。
此处记录:http : //learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression
这些特定的行是jQuery插件的常用包装:
“ ...为了确保您的插件不会与其他可能使用美元符号的库发生冲突,将jQuery传递给将其映射到美元符号的自执行函数(闭包)是一种最佳做法,在执行范围内不会被另一个库覆盖。”
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
准备就绪的多框架安全简写为:
jQuery(function($, undefined) {
// $ is guaranteed to be short for jQuery in this scope
// undefined is provided because it could have been overwritten elsewhere
});
这是因为jQuery不是唯一使用$
and undefined
变量的框架
(function($){ ... })(jQuery);
ready
,而是立即被调用
var somevar;
)都不会在函数外部更改相同名称的变量的内容