jQuery中函数变量$冲突的解决办法
?最近项目中,使用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("这种情况很少见!");