您当前的位置 » 主页 > 文章中心 > 我的博客 > 关于Discuz与jQuery冲突问题的亲测解决方法
23/09
HIT:

[上一篇] [下一篇] 关于Discuz与jQuery冲突问题的亲测解决方法

发布:2011-09-23 09:28 | 分类: 我的博客 | 评论: | 来源:未知

最近的一个项目整合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因$()重复引起的冲突问题中,这里只是一个小小的应用!

TAG:  
 上一篇: DeDeCMS图片集上传图片出错(FIELID:*)的解决办法
 下一篇: 共享一个全局调用会员积分头衔方法
发表评论 进入详细评论页>>
用户名:  验证码:点击我更换图片



  作品展示文章中心站内下载艺术设计案例中心服务内容业务流程留言咨询
COPYRIGHT @ 2009-2012 MartinStudio ALL RIGHTS RESERVED. Powered by DEDECMS 沪ICP备12028012号-1 网站安全检测平台