为什么我们必须在 jQuery 中使用 $.noConflict()?

Why we have to use $.noConflict() in jQuery?

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

var $j=$.noConflict();

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

 var $j=$;

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

在这里你得到了关于原因的详细信息:

Many JavaScript libraries use $ as a function or variable name, just as jQuery does. In jQuery's case, $ is just an alias for jQuery, so all functionality is available without using $. If you need to use another JavaScript library alongside jQuery, return control of $ back to the other library with a call to $.noConflict(). Old references of $ are saved during jQuery initialization; noConflict() simply restores them.

来自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;
    },

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

如果您需要在 jQuery 旁边使用另一个 JavaScript 库,则 return 通过调用将 $ 的控制权交还给另一个库到 $.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);