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

问题描述:默认情况下,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");  


本文最后更新于 2015-07-26 09:48:22 并被添加「js jquery」标签,已有 4011 位童鞋阅读过。
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处

相关文章

此处评论已关闭