jQuery 是一个强大优秀的 Javascript 框架,但是当在 Discuz X 上引入其所编写的特效时会有不兼容的问题,其常见的表现为引入 jQuery 后 DIY 功能和下拉菜单无法使用。

其原因是由于 jQuery 是通过一个全局变量 $来引用对象,而 Discuz X 的 common.js 文件加载时也使用了 $来引用,这就造成了可能 jQuery 功能有问题或者是下拉菜单无法使用的问题,其具体表现是后加载的功能正常,先加载的功能失效。

解决思路

对于 jQuery 除了 $还有另外一个全局调用对象的方法,这个就是使用库本身的名称 jQuery 。

在 jQuery 下 $("div"); 和 jQuery("div"); 是同样的意思,所以我们可以将 $送给 common.js 来使用,而 jQuery 使用自己所有的 jQuery,这样就可以根本解决全局使用冲突的问题了。

除了 common.js 和 jQuery.js 文件,一般的还会涉及到一个控制特效的 js 文件,特效 js 文件用到的 $方法也要修改。

具体方法
1 、 $让给 common.js 使用,而 jQuery 使用 jQuery
打开 jQuery 的源代码,在文件的最后添加

  1. jQuery.noConflict();

2 、替换 js 特效文件中的 $符号
打开 js 特效文件,搜索

  1. $(

替换为

  1. jQuery(

保存好所有文件,更新一下缓存,不兼容的问题就一下烟消云散了。