素闻在 Discuz 模板中使用 JQUERY 时会出现冲突,因为改 Discuz 程序较少,所以一直没有亲见,今天在给 MJJer 论坛添加个性化工能时用到 JQUERY,发现只要加载 JQUERY.MIN.JS 文件模板就会出现 JS 错误。
查找了相关资料,原来是 Discuz 中自定义了获取特定 ID 内容的函数使用了 $符号,直接与 JQUERY 的 $选择器冲突。还好 jquery 留了一手,预留了在发生冲突时的解决办法:即使用 jQuery.noConflict() 方法
XML/HTML 代码
var j = jQuery.noConflict(); |
重新定义一个选择器 j 后即可用 j 代替 $使用了,给 id=load 的 div 加内容即可用 j("#load").html("要添加的内容");
不过,落叶在模板中间使用时还是会出错,开始的解决办法是在 Discuz 模板使用第一个 $之前就申明 var j = jQuery.noConflict(); 以消除冲突,似乎有些作用,不过偶尔还是会出错。
后来才想到,直接在模板最后即 foot.html 文件最后调用 jquery.min.js 然后再使有 jQuery.noConflict() 方法不就行了,结果还真是行得通,没有再报错。
至于 Discuz 用到 $,又没有多大功能,不知作何考虑?故意为之?