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>
      终于解决了,开心!
  • 相关阅读:
    八皇后(回溯经典)
    高精度阶乘(大数运算)
    跳棋(利用规范的数学方法)
    贪心砝码(分治法)
    大数乘方取余
    二分法查找
    汉诺塔(经典递归)(未完全明白)
    斐波那契数列和
    实验 7: OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman 实现流表下发流表
  • 原文地址:https://www.cnblogs.com/piuba/p/3200010.html
Copyright © 2011-2022 走看看