以下是 的简写$(document).ready
吗?
(function($){
//some code
})(jQuery);
我看到这种模式经常使用,但我找不到任何参考。如果它是 的简写$(document).ready()
,是否有任何特殊原因它可能不起作用?在我的测试中,它似乎总是在 ready 事件之前触发。
以下是 的简写$(document).ready
吗?
(function($){
//some code
})(jQuery);
我看到这种模式经常使用,但我找不到任何参考。如果它是 的简写$(document).ready()
,是否有任何特殊原因它可能不起作用?在我的测试中,它似乎总是在 ready 事件之前触发。
简写是:
$(function() {
// Code here
});
$(document).ready(handler)
is (函数$(handler)
在哪里)的简写。handler
见这里。
您问题中的代码与.ready()
. 相反,它是一个以 jQuery 对象作为参数的立即调用函数表达式 (IIFE)。它的目的是至少将$
变量的范围限制在它自己的块中,这样它就不会引起冲突。您通常会看到 jQuery 插件使用的模式来确保$ == jQuery
.
正确的简写是这样的:
$(function() {
// this behaves as if within document.ready
});
您发布的代码...</p>
(function($){
//some code
})(jQuery);
…创建一个匿名函数并立即执行它,并jQuery
作为 arg 传入$
。它实际上所做的只是获取函数内部的代码并像往常一样执行它,因为$
它已经是jQuery
. :D
这不是$(document).ready()
.
您发布的代码将内部代码封装起来,并使 jQuery 可用,$
而不会污染全局命名空间。当您想在一个页面上同时使用原型和 jQuery 时,可以使用此选项。
ready 的多框架安全简写是:
jQuery(function($, undefined) {
// $ is guaranteed to be short for jQuery in this scope
// undefined is provided because it could have been overwritten elsewhere
});
这是因为 jQuery 不是唯一使用$
andundefined
变量的框架
这些特定的行是 jQuery 插件的常用包装:
“...为了确保您的插件不会与可能使用美元符号的其他库发生冲突,最好将 jQuery 传递给将其映射到美元符号的自执行函数(闭包),以便它可以”不会在其执行范围内被另一个库覆盖。”
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
那这个呢?
(function($) {
$(function() {
// more code using $ as alias to jQuery
// will be fired when document is ready
});
})(jQuery);