我知道我们正在使用$ .noConflict()来克服其他插件冲突。 例如,如果某个新插件使用$符号作为变量,它将覆盖。所以,我们正在使用如下
var $j=$.noConflict();
但是,我怀疑在这里,我们可以使用下面的代码本身归档这个为什么$ .noConflict();需要的?
var $j=$;
先谢谢了。请解释一下主要的不同
答案 0 :(得分:3)
在这里您可以获得有关原因的详细信息:
许多JavaScript库只使用$作为函数或变量名 就像jQuery一样。在jQuery的例子中,$只是jQuery的别名,所以 无需使用$即可使用所有功能。如果你需要使用 与jQuery一起使用的另一个JavaScript库,返回$ back的控件 通过调用$ .noConflict()到另一个库。 的旧引用 在jQuery初始化期间保存 $; noConflict()只是恢复 的它们。强>
它来自jQuery,还有更多信息:https://api.jquery.com/jquery.noconflict/
评论后更新
如果您搜索noConflict
,则可以从jQuery代码https://code.jquery.com/jquery-1.10.2.js找到
noConflict: function( deep ) {
if ( window.$ === jQuery ) {
window.$ = _$;
}
if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
},
简单来说:这会检查是否已使用全局$
或全局jQuery
。无论哪种方式,它将返回jQuery。因此,您var $j=$;
$
可能已经存在冲突。 noConflict()
就是您所需要的。
答案 1 :(得分:0)
如果您需要使用另一个JavaScript库以及 jQuery ,请通过调用$ .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);