rinald_未来往事

Discuz $()与JQuery $()冲突解决方法

WEB前端
问题描述:默认情况下,Discuz引入jQuery代码后直接使用 $(),运行后会报错。

原因分析:Discuz默认使用了$()作为对象选取函数,刚好与jQuery默认的$()函数重合造成冲突。Discuz $()对象选取函数代码位于static/js/common.js第8-10行:
  1. function $(id) {  
  2.   return !id ? null : document.getElementById(id);  
  3. }  


至此,你应该了解到为么Discuz引入JQuery后为什么会出现部分功能失效或报错的问题。解决方法这里列出2种:

方法一:
在common.js载入之前先载入jQuery.js,不然jquery的$()函数会覆盖common.js的$()函数。然后用到jQuery的$()函数的地方都用jQuery()代替。

方法二:
在common.js载入之后再载入jQuery.js,在调用jQuery的函数前给jQuery赋予一个新的变量,这样也可以保持原有的discuz程序不被更改,新添加的jQuery代码也能正常工作,例如重新对jQuery $()进行赋值为fity:
重新对jQuery进行赋值:
  1. var fity= jQuery.noConflict();  
  2. //注释:将$()函数映射回原来的$()函数,之后便可以使用fity()或jQuery()来代替jQuery原来的$()函数  
  3. //注意:这里fity和jQuery相同,而$()函数则是原来Discuz的$()函数。  

使用示例:
  1. fity(".vw a").attr("target""_blank");  

原文作者:rinald
原文地址:http://fity.cn/post/528.html
互联网技术更新较快,本站很多文章具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请您在转载时保留此出处信息,尊重别人也是尊重自己。

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。