javascript - 2种jquery的写法,有什么区别?

标签 javascript jquery

我有一个函数,里面有一些简单的表达式,添加nums,追加doms等等。 因为我只需要调用它一次,所以一个匿名函数就可以做到。但是我应该选择哪种方式,有什么区别呢?

1: $(document).ready() {}) 的简写我经常看到,

$(function(){
    var something;
    ++something;
});

2:在 jquery 插件中找到。它也绑定(bind)到 $(document).ready() 吗?

(function ($) {
    var something;
    ++something;
})(jQuery);

最佳答案

第二个绑定(bind)到ready 事件。

详细。这:

$(function(){  /* ... */ });

需要定义一个变量$通常这个变量在加载 jQuery 并指向 jQuery 函数时存在。

随后,当您使用函数参数调用 jQuery 函数时,jQuery 会将此函数参数绑定(bind)到 ready 事件。以上相当于

jQuery(function(){  /* ... */ });

它又是

的便捷简写
jQuery(document).ready(function(){  /* ... */ });

你的第二个代码片段

(function ($) { /* ... */ })(jQuery);

是否依赖$被定义或指向jQuery()(如果并行加载多个JS框架可能会发生这种情况) .

为了在特定的代码区域内仍然具有 $ 的便利性,它创建了一个函数在其中 $ 被定义并指向jQuery()。但是,它没有绑定(bind)到 DOM 事件。

但这会是:

(function ($) { 
   $(function(){  /* ... */ });
})(jQuery);

此设置用于最小化 JS 框架或依赖于 $ 的其他代码片段之间的冲突。 jQuery 插件作者使用它来编写可在多种环境下工作的插件。


如果觉得组合起来太复杂,jQuery还有一个简写功能,可以避免变量冲突,同时绑定(bind)document ready。但要小心,它只适用于 jQuery 并且有一些缺点。

jQuery(function($) { /* some code that uses $ */ });

更多细节请看这两篇文章:

  1. > Using jQuery with Other Libraries
  2. > .ready() @ api.jquery.com (Aliasing the jQuery Namespace)

关于javascript - 2种jquery的写法,有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7474434/

相关文章:

javascript - 使用 AngularJS 从 Apache2 服务器获取最新的 Json

javascript - 深度链接基础 5 个选项卡

javascript - 通过 anchor 标签添加幻灯片效果

javascript - 未捕获范围错误 : Invalid string length

javascript - 如何在 flot 中组合一个选项对象

jquery - 谷歌地图 v3 的 setinterval 或 settimeout

javascript - 如何创建一些ajax调用完成后触发的事件?

javascript - Ignite UI IgCurrencyEditor

javascript - Bootstrap .dropdown() "Uncaught TypeError: undefined is not a function"

javascript - 导航栏 anchor 无法使用 js 正确定向