$(document).ready 速记

IT技术 javascript jquery document-ready shorthand
2021-01-13 17:27:51

以下是$(document).ready?

(function($){

//some code

})(jQuery);

我看到这种模式被大量使用,但我找不到任何参考。如果它是 的简写$(document).ready(),是否有任何特殊原因它可能不起作用?在我的测试中,它似乎总是在就绪事件之前触发。

6个回答

简写是:

$(function() {
    // Code here
});
知道您可以$免费获得作为第一个参数是很有用的
2021-03-28 17:27:51
我仍然每个月左右访问一次这个答案。
2021-04-01 17:27:51
第一个参数是$可能想把它加进去。它对jQuery(function($, undefined) {});
2021-04-03 17:27:51
@raynos 它不是必需的。上面的代码作为别名工作正常$(document).ready(function(){ });
2021-04-11 17:27:51

的简写$(document).ready(handler)$(handler)(where handleris a function)。这里

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

从技术上讲,它是一个立即调用的函数表达式如果它是自调用的,它将从自身内部调用自己。在网络上搜索iife,或跳到Cowboy Alman 的著名博客文章细节……很糟糕。
2021-03-18 17:27:51

正确的简写是这样的:

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

您发布的代码...

(function($){

//some code

})(jQuery);

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

如果加载了其他也使用 $ 作为别名的工具,您可以说它也确保 $ 是 jQuery 的别名
2021-04-01 17:27:51

这不是$(document).ready().

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

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

谢谢你回答问题
2021-04-06 17:27:51

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

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

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

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