关于Discuz与jQuery冲突问题的亲测解决方法

本文详细介绍了如何解决jQuery库定义的函数$()与Discuz的comme.js中函数冲突的问题,通过简单的两步操作即可解决冲突,确保Discuz论坛的所有js效果正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的一个项目整合dede和discuz程序,客户要求风格统一,所以有很多样式及特效都是要公用的。其中jQuery库定义的函数$()正好与discuz的comme.js中函数一样,这样就冲突了,导致discuz论坛所有js效果失效。网上搜罗了一下,N多的方法,但是很多说的不明不白,我也试了很多方法,浪费了我一个晚上加一个早上,真是费时费力。不过其中一个方法倒是解决了这个冲突,所以共享出来备用,也方便大家。

其实解决方法倒是不难,难的是思路和没有一个详细的步骤,这里我就做个详细的说明。首先思路很简单,就是discuz占用了$(),那么jQuery中我就不用这个函数,其实jQuery已经给出了解决方案,就是用var 自定义函数名 = jQuery.noConflict();来置换jQuery中的$,然后在jQuery中所有应用到$的地方都替换成这个自定义函数名。下面说一下步骤:

1、打开discuz中共用的header.hrm文件,在<script type="text/javascript" src="{$jspath}common.js?{VERHASH}"></script>下面加载jQuery<script type="text/javascript" src="{$jspath}jquery.js?{VERHASH}"></script>。

2、这里两种情况,一种是直接在文档中写js代码

  1. <script language="javascript" type="text/javascript"
  2. <!--  
  3. var jq = jQuery.noConflict();
  4.     jq(document).ready(function(){  
  5.         jq("select").sSelect();  
  6.     })  
  7. --
  8. </script

这里我自定义的函数名就是jq,还有一种情况是外链一个js文件,情况是一样的,只要在这个js文件开头加上var jq = jQuery.noConflict();,然后下面用到$的地方都替换为自定义函数名jq就可以了。

其实很简单,就一句话概括:一个思路,两个步骤。

注:这个方法可以应用到所有与jQuery因$()重复引起的冲突问题中,这里只是一个小小的应用!

转载于:https://www.cnblogs.com/chenshuo/p/3820423.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值