0

我知道我们正在使用 $.noConflict() 来克服其他插件冲突。例如,如果某个新插件使用 $ 符号作为变量,它将被覆盖。所以,我们使用如下

var $j=$.noConflict();

但是,我在这里有疑问,我们可以使用下面的代码本身存档,然后为什么 $.noConflict(); 需要吗?

 var $j=$;

提前谢谢。请解释主要的不同

4

2 回答 2

3

在这里,您可以获得有关原因的详细信息:

许多 JavaScript 库使用 $ 作为函数或变量名,就像 jQuery 一样。在 jQuery 的例子中,$ 只是 jQuery 的别名,所以所有功能都可以在不使用 $ 的情况下使用。如果您需要与 jQuery 一起使用另一个 JavaScript 库,请通过调用 $.noConflict() 将 $ 的控制权返回给另一个库。$ 的旧引用 在 jQuery 初始化期间被保存;noConflict() 只是恢复 它们。

它来自 jQuery,还有更多信息:https ://api.jquery.com/jquery.noconflict/

评论后更新

从 jQuery 代码https://code.jquery.com/jquery-1.10.2.js如果你搜索noConflict你会发现

noConflict: function( deep ) {
        if ( window.$ === jQuery ) {
            window.$ = _$;
        }

        if ( deep && window.jQuery === jQuery ) {
            window.jQuery = _jQuery;
        }

        return jQuery;
    },

简单来说:这会检查 global$或 globaljQuery是否已经被使用。无论哪种方式,它都会返回 jQuery。所以你不能只做var $j=$;可能$已经有冲突的原因。这noConflict()就是你需要的。

于 2017-10-02T05:48:19.290 回答
1

如果您需要在jQuery旁边使用另一个 JavaScript 库,请通过调用 $ .noConflict()将 $ 的控制权返回给另一个库。这种技术与.ready()方法对jQuery对象的别名能力结合起来特别有效,因为在传递给.ready()的回调中,如果您愿意,可以使用 $,而不必担心以后发生冲突

以不同方式使用 noConflict 的示例

键入 01 var j = jQuery.noConflict();

// Do something with jQuery
j( "div p" ).hide();

// Do something with another library's $()
$( "content" ).style.display = "none";

02型

jQuery.noConflict();
(function( $ ) {
  $(function() {
    // More code using $ as alias to jQuery
  });
})(jQuery);
于 2017-10-02T06:40:29.280 回答