zoukankan      html  css  js  c++  java
  • Discuz!和jQuery冲突的解决办法

    Common.js是官方自带的,我没改过它,所以不可能出错,所以问题就应该是两者冲突了。导致的结果我也发现了,前台的DIY功能不能用了。
     
       我还花了很多时间在那里研究冲突的地方,后来还是没能解决。之后我去网上搜索“Discuz! jQuery”,果然有文章写两者冲突的事情。其实19楼那里下载下来的js就是一个jQuery,只是后面外加了一些function。解决办法有,但 我试了没用,可能是我一开始没有看懂。文章如下:
     
      DiscuzX1.5在static/js/common.js中的某一行的内容如下:
     
      function $(id) {
       return !id ? null : document.getElementById(id);
      }
     
       表示这$(id)用于获取id为(id)的对象(这个说法好像不太科学)。$的用法和jQuery中的用法发生了严重的冲突。众所周知,jquery强 大的标签选择器用的就是$来获取,这样一来就与discuz x1.5发生了严重的冲突。尝试在discuz x1.5的广场加入infinite Carousel功能的时候遇到了jquery的冲突问题。无法自动滚动。无法显示非常漂亮的图片滚动展示(悲剧)。
     
      解决方法如下:
     
      主要是Discuz X1.5使用了$(id)作为dom节点的获取方法,而$符号刚好与jQuery的默认符号相冲突,一个是优秀的社区系统,一个是出色的js框架,自然希望做到兼容。
     
      解决方法1:修改/template/default/common/header_common.htm,在第16行代码<!–{csstemplate}–>
    之 后增加以下代码:<script src=”{$_G[setting][jspath]}jquery-1.4.min.js?{VERHASH}" type="text/javascript"></script>之后用到jQuery的$的地方用jQuery代替。
     
       解决方法2:修改/template/default/common/header.htm,在第20行代码</head>之前增加以下代 码:<script src="{$_G[setting][jspath]}jquery-1.4.min.js?{VERHASH}" type="text/javascript"></script><script type="text/javascript">jQuery.noConflict();</script>
    之后用到jQuery的$的地方用jQuery代替。
     
      注:修改完成后请记得更新一下系统模板缓存才能看到效果,手动删除/data/template/下的所有文件,或在系统管理的工具>更新缓存中更新模板缓存。
     
      上面的我不多介绍了,我自己后来解决了。其实$()函数的冲突,jQuery中给出了解决方法:jQuery.noConflict(),把美元让给你(看看人家多大肚)。
     
      那么我们的jQuery代码可以这样写了:
      var jq = jQuery.noConflict(); //把$让给第一个实现它的库,用jq代替
      jq(function()
      {
      //**********************
      }
      );
      这样就完美解决了两者的冲突!!
     
      我下载了一个jQuery v1.4.2更名为ditu.js放在JS目录下,然后打开它在后面添加代码:
     
    var jq = jQuery.noConflict(); 
    jq(function()
    {
    jq(".citymap_huisuo dd").hover(function(){jq(this).addClass("div_hover");},function(){jq(this).removeClass("div_hover");});
    jq(".city_tips_active dt").click(function(){
    jq(".city_tips_active dd").hide();
    jq(".city_tips_active strong").removeClass("strong_active");
    jq(this).parent("dl").find("dd").show();
    jq(this).find("strong").addClass("strong_active");
    });
    }
    );
     
      然后在代码里引用下就好:
      <script type="text/javascript" src="{$_G[setting][jspath]}ditu.js?{VERHASH}"></script>
      终于解决了,开心!
  • 相关阅读:
    PNG文件格式具体解释
    opencv2对读书笔记——使用均值漂移算法查找物体
    Jackson的Json转换
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 装箱问题
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 单词接龙
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 方格取数
    Java实现 蓝桥杯VIP 算法训练 单词接龙
  • 原文地址:https://www.cnblogs.com/piuba/p/3077185.html
Copyright © 2011-2022 走看看