Discuz $()与JQuery $()冲突解决方法
问题描述:默认情况下,Discuz引入jQuery代码后直接使用 $(),运行后会报错。
原因分析:Discuz默认使用了$()作为对象选取函数,刚好与jQuery默认的$()函数重合造成冲突。Discuz $()对象选取函数代码位于static/js/common.js第8-10行:
- function $(id) {
- return !id ? null : document.getElementById(id);
- }
至此,你应该了解到为么Discuz引入JQuery后为什么会出现部分功能失效或报错的问题。解决方法这里列出2种:
方法一:
在common.js载入之前先载入jQuery.js,不然jquery的$()函数会覆盖common.js的$()函数。然后用到jQuery的$()函数的地方都用jQuery()代替。
方法二:
在common.js载入之后再载入jQuery.js,在调用jQuery的函数前给jQuery赋予一个新的变量,这样也可以保持原有的discuz程序不被更改,新添加的jQuery代码也能正常工作,例如重新对jQuery $()进行赋值为fity:
重新对jQuery进行赋值:
- var fity= jQuery.noConflict();
- //注释:将$()函数映射回原来的$()函数,之后便可以使用fity()或jQuery()来代替jQuery原来的$()函数
- //注意:这里fity和jQuery相同,而$()函数则是原来Discuz的$()函数。
使用示例:
- fity(".vw a").attr("target", "_blank");
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭