我知道我们正在使用 $.noConflict() 来克服其他插件冲突。例如,如果某个新插件使用 $ 符号作为变量,它将被覆盖。所以,我们使用如下
var $j=$.noConflict();
但是,我在这里有疑问,我们可以使用下面的代码本身存档,然后为什么 $.noConflict(); 需要吗?
var $j=$;
提前谢谢。请解释主要的不同
我知道我们正在使用 $.noConflict() 来克服其他插件冲突。例如,如果某个新插件使用 $ 符号作为变量,它将被覆盖。所以,我们使用如下
var $j=$.noConflict();
但是,我在这里有疑问,我们可以使用下面的代码本身存档,然后为什么 $.noConflict(); 需要吗?
var $j=$;
提前谢谢。请解释主要的不同
在这里,您可以获得有关原因的详细信息:
许多 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()
就是你需要的。
如果您需要在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);