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 的源代码,在文件的最后添加
- jQuery.noConflict();
2 、替换 js 特效文件中的 $符号
打开 js 特效文件,搜索
- $(
替换为
- jQuery(
保存好所有文件,更新一下缓存,不兼容的问题就一下烟消云散了。