Mar*_*own 236 javascript jquery document-ready shorthand
以下是速记$(document).ready吗?
(function($){
//some code
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我看到这种模式使用了很多,但我找不到任何引用.如果它是速记$(document).ready(),是否有任何特殊原因可能无效?在我的测试中,似乎总是在准备好的事件之前开火.
Kyl*_*man 531
简写是:
$(function() {
// Code here
});
Run Code Online (Sandbox Code Playgroud)
Bol*_*ock 246
$(document).ready(handler)is 的简写$(handler)(在哪里handler是一个函数).看到这里.
您问题中的代码与此无关.ready().相反,它是一个立即调用的函数表达式(IIFE),其中jQuery对象作为其参数.其目的是将至少$变量的范围限制为它自己的块,这样就不会引起冲突.您通常会看到jQuery插件使用的模式来确保这一点$ == jQuery.
Gor*_*son 88
正确的速记是这样的:
$(function() {
// this behaves as if within document.ready
});
Run Code Online (Sandbox Code Playgroud)
你发布的代码......
(function($){
//some code
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
...创建一个匿名函数并立即执行它并jQuery作为arg传入$.所有它有效地做的是获取函数内部的代码并像正常一样执行它,因为$它已经是一个别名jQuery.:d
sam*_*lux 16
这不是简写$(document).ready().
您发布的代码将内部代码打包并使jQuery可用,$而不会污染全局命名空间.当您想在一个页面上同时使用prototype和jQuery时,可以使用此方法.
记录在这里:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression
mor*_*gar 12
这些特定的行是jQuery插件的常用包装:
"...为了确保您的插件不会与可能使用美元符号的其他库发生冲突,最好将jQuery传递给自动执行函数(闭包),将其映射到美元符号以便它可以'在执行范围内被另一个图书馆覆盖."
(function( $ ){
$.fn.myPlugin = function() {
// Do your awesome plugin stuff here
};
})( jQuery );
Run Code Online (Sandbox Code Playgroud)
来自http://docs.jquery.com/Plugins/Authoring
Tim*_*nen 11
准备好的多框架安全速记是:
jQuery(function($, undefined) {
// $ is guaranteed to be short for jQuery in this scope
// undefined is provided because it could have been overwritten elsewhere
});
Run Code Online (Sandbox Code Playgroud)
这是因为jQuery不是唯一使用$和undefined变量的框架
Edv*_*har 11
更短的变体是使用
$(()=>{
});
Run Code Online (Sandbox Code Playgroud)
where$代表 jQuery,也()=>{}就是从闭包继承的所谓的“箭头函数”this。(所以this你可能会有window而不是document。)
| 归档时间: |
|
| 查看次数: |
153485 次 |
| 最近记录: |