• jQuery和Discuz js冲突解决办法


    转自:http://www.wufangbo.com/jquery-discuz-js

    $(id)函数冲突

    Discuz使用了S()作为对象选取函数,刚好与jQuery默认的$()函数重合造成冲突,代码依旧位于include/common.js中,如下:

    Code:

    function $(id) {
       return document.getElementById(id);
    }

    解决方法1:

    jquery.js在common.js之前载入,不然jquery的$()函数会覆盖common.js的$()函数;然后用到jQuery的$()函数的地方都用jQuery()代替。

    解决方法2:

    将jquery.js在common.js之后载入,在调用jQuery的函数前使用一下代码:

    Code:

    var jq = jQuery.noConflict();

    以上是将$()函数映射回原来的$()函数;之后便可以使用jq()或jQuery()来代替jQuery原来的$()函数,这里jq和jQuery相同,而$()函数则是原来Discuz的$()函数。

    解决方法2也可使用jQuery.noConflict()的其他用法代替,参见后面的使用说明。

    =============

    jQuery.noConflict() 使用说明

    运行这个函数将变量$的控制权让渡给第一个实现它的那个库。这有助于确保jQuery不会与其他库的$对象发生冲突。

    在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$(“div p”)的地方,就必须换成jQuery(“div p”)。

    注意:这个函数必须在你导入jQuery文件之后,并且在导入另一个导致冲突的库之前使用。当然也应当在其他冲突的库被使用之前,除非jQuery是最后一个导入的。

    Code:

    jQuery.noConflict();
    // 使用 jQuery
    jQuery("div p").hide();
    // 使用其他库的 $()
    $("content").style.display = 'none';

    恢复使用别名$,然后创建并执行一个函数,在这个函数的作用域中仍然将$作为jQuery的别名来使用。在这个函数中,原来的$对象是无效的。这个函数对于大多数不依赖于其他库的插件都十分有效。

    Code:

    jQuery.noConflict();
    (function($) {
     $(function() {
      // 使用 $ 作为 jQuery 别名的代码
     });
    })(jQuery);
    // 其他用 $ 作为别名的库的代码

    可以通过jQuery.noConflict()级联函数来简化写法。

    Code:

    jQuery.noConflict()(function(){
      // 使用 $ 作为 jQuery 别名的代码
    });
    // 其他用 $ 作为别名的库的代码

    创建一个新的别名用以在接下来的库中使用jQuery对象。

    Code:

    var j = jQuery.noConflict();
    // 使用 jQuery 的代码
    j("div p").hide();
    // 使用其他库的 $() 的代码
    $("content").style.display = 'none';

    把jQuery完全移动到另一个命名空间的对象上,如下

    Code:

    var dom = {};
    dom.query =jQuery.noConflict(true);
    // 使用新 jQuery 的代码
    dom.query("div p").hide();
    // 使用其他库的 $() 的代码
    $("content").style.display = 'none';
    // 使用 jQuery 的代码
    jQuery("div > p").hide();
  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/wangjiangze/p/2540252.html
Copyright © 2020-2023  润新知