最近的一个项目整合dede和discuz程序,客户要求风格统一,因此有不少样式及特效都是要公用的。其中jQuery库定义的函数$()正好与discuz的comme.js中函数同样,这样就冲突了,致使discuz论坛全部js效果失效。网上搜罗了一下,N多的方法,可是不少说的不明不白,我也试了不少方法,浪费了我一个晚上加一个早上,真是费时费力。不过其中一个方法却是解决了这个冲突,因此共享出来备用,也方便你们。javascript
其实解决方法却是不难,难的是思路和没有一个详细的步骤,这里我就作个详细的说明。首先思路很简单,就是discuz占用了$(),那么jQuery中我就不用这个函数,其实jQuery已经给出了解决方案,就是用var 自定义函数名 = jQuery.noConflict();来置换jQuery中的$,而后在jQuery中全部应用到$的地方都替换成这个自定义函数名。下面说一下步骤:java
一、打开discuz中共用的header.hrm文件,在<script type="text/javascript" src="{$jspath}common.js?{VERHASH}"></script>下面加载jQuery<script type="text/javascript" src="{$jspath}jquery.js?{VERHASH}"></script>。jquery
二、这里两种状况,一种是直接在文档中写js代码jsp
这里我自定义的函数名就是jq,还有一种状况是外链一个js文件,状况是同样的,只要在这个js文件开头加上var jq = jQuery.noConflict();,而后下面用到$的地方都替换为自定义函数名jq就能够了。函数
其实很简单,就一句话归纳:一个思路,两个步骤。spa
注:这个方法能够应用到全部与jQuery因$()重复引发的冲突问题中,这里只是一个小小的应用!xml