$(document).ready速记

2020/10/10 06:21 · javascript ·  · 0评论

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

(function($){

//some code

})(jQuery);

我看到这种模式使用了很多东西,但是我找不到任何引用。如果它是的简写$(document).ready(),是否有任何特定原因可能不起作用?在我的测试中,它似乎总是在ready事件之前触发。

的简写$(document).ready(handler)$(handler)handler函数在哪里)。这里

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

简写为:

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

正确的简写是这样的:

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

您发布的代码…

(function($){

//some code

})(jQuery);

…创建一个匿名函数并jQuery作为arg传入,立即执行它$它实际上所做的就是将代码放入函数中并像平常一样执行它,因为$它已经是的别名jQuery:D

这不是的简写$(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 );

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

准备就绪的多框架安全简写为:

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,()=>{}即所谓的“箭头函数”,它继承this自闭包。(这样this您就可以拥有window而不是document。)

那这个呢?

(function($) { 
   $(function() {
     // more code using $ as alias to jQuery
     // will be fired when document is ready
   });
})(jQuery);
本文地址:http://javascript.askforanswer.com/document-readysuji.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!