最近项目中,使用jQuery发现其中的函数变量$与其它JS框架冲突。google后发现一个解决办法:
var jQuery=jQuery.noConflict();
在使用 jQuery.noConflict();后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("div p")的地方,就必须换成jQuery("div p") .
在jQuery1.3.2中,解决函数变量“$”冲突问题,对JS类库的引入顺序没有特殊要求。只要jQuery.noConflict(true);在jQuery的引入后执行即可。
jQuery.noConflict()函数的源码为:
noConflict: function( deep ) {
window.$ = _$;
if ( deep )
window.jQuery = _jQuery;
return jQuery;
}
创建一个新的别名用以在接下来的库中使用jQuery对象。
jQuery 代码:
var j = jQuery.noConflict();
// 基于 jQuery 的代码
j("div p").hide();
// 基于其他库的 $() 代码
$("content").style.display = 'none';
jQuery.noConflict(true)则不仅可以防止$冲突,还可以防止jQuery这个关键词冲突。
jQuery 代码:
var j = jQuery.noConflict(true);
// 基于 jQuery 的代码
j("div p").hide();
// 基于其他库的 $() 代码
$("content").style.display = 'none';
// 基于其他库(或版本)的
jQuery() 代码
jQuery("#abc").html("这种情况很少见!");