javascript - 为什么 (jQuery) 在函数右括号之后

标签 javascript jquery magento prototypejs

我正在使用 Magento 网站。我在让 Magento 的prototype.js 与 jQuery 很好地配合时遇到了问题。我读到我所有的 jQuery 都需要使用 jQuery.noConflict();我已经完成了,但仍然遇到一些问题。我看到一些函数右括号后面跟着 (jQuery)。

我想知道这是做什么的,是否需要将其更改为 (jQuery.noConflict())?

最佳答案

只要 jQuery.noConflict() 是,就不需要将 (jQuery) 更改为 (jQuery.noConflict())在此之前调用(并且在包含 JQuery 库之后)。

如您所知,当您在无冲突模式下使用 jQuery 时,应该使用 jQuery 而不是 $

但是您可以在放置在立即调用函数表达式 (IIFE) 内的代码中使用 $ 而不是 jQuery,如下所示:

(function($) {
    // Code here can use $, instead of jQuery.
})(jQuery);

IIFE 是您定义匿名函数并立即调用它的地方。在上面的代码中,jQuery 对象作为参数传递给匿名函数,并且由于该参数名为 $,因此 $ 代表函数内的 jQuery 对象。

此外,jQuery 对象作为第一个参数传递给文档就绪事件的回调函数,因此您可以执行以下操作:

jQuery(function($) {
    // Code here can use $, instead of jQuery.
});

这与:

相同
jQuery(document).ready(function($) {
    // Code here can use $, instead of jQuery.
});

请注意,在 IIFE 内用 var 声明的变量不是全局的。这通常是一件好事,也是使用 IIFE 的另一个原因。如果您确实想在 IIFE 内声明全局变量,则应将其作为 window 对象的属性进行引用。

<script type="text/javascript">
var a = 1; // This is a global variable.
(function($) {
    var b = 2; // This is NOT a global variable.
    window.c = 3; // This is a global variable.
})(jQuery);
<script>

关于javascript - 为什么 (jQuery) 在函数右括号之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30110953/

相关文章:

ios - 从 iOS 中的 magento 2.0 获取完整图像 URL

css - Magento 中 <table> 的格式化问题

api - Magento 创建 api 用户并以编程方式分配其角色 [SOAP]

javascript - 如何访问 stenciljs 中的 native HTML 属性?以及如何让它出现在文档中?

javascript - 切换焦点以跟随 toggleClass

javascript - 根据其他属性和链接值查找链接属性

jquery - 我可以在一键功能中为 2 个 id 元素编写相同的功能吗?

javascript - 实现多层次的深度链接

javascript - 图像映射顶部的文本

javascript - 将元素 ID 过滤器添加到页面 anchor 的 jQuery 脚本