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


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

  • 相关阅读:
    自学Linux Shell14.3-创建临时文件
    自学Linux Shell14.2-在脚本中使用其他文件描述符
    自学Linux Shell14.1-理解输入输出
    自学Linux Shell13.3-获得用户输入(read命令)
    自学Linux Shell13.2-选项处理(主要getopt、getopts命令)
    自学Linux Shell13.1-命令行参数
    自学Linux Shell12.8-循环实例
    自学Linux Shell12.7-控制循环break、continue命令
    自学Linux Shell12.6-嵌套循环for命令
    自学Linux Shell12.5-while、until命令
  • 原文地址:https://www.cnblogs.com/chenshuo/p/3820423.html
Copyright © 2020-2023  润新知