zoukankan      html  css  js  c++  java
  • jQuery多库共存处理

    jQuery多库共存处理(来自慕课网)

    多库共存换句话说可以叫无冲突处理。

    总的来说会有2种情况会遇到:

       1、$太火热,jQuery采用$作为命名空间,不免会与别的库框架或者插件相冲突。

       2、jQuery版本更新太快,插件跟不上,导致不同版本对插件的支持度不一样。

    出于以上的原因,jQuery给出了解决方案–– noConflict函数。

        引入jQuery运行这个noConflict函数将变量$的控制权让给第一个实现它的那个库,确保jQuery不会与其他库的$对象发生冲突。
    在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("aaron")的地方,就必须换成jQuery("aaron"),因为$的控制权已经让出去了。

    使用DEMO:

    jQuery.noConflict();
    // 使用 jQuery
    jQuery("aaron").show();
    // 使用其他库的 $()
    $("aaron").style.display = ‘block’;
    

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

    由于比较简单,我们直接上代码解说:

    Var _jQuery = window.jQuery,
        _$ = window.$;
    
    jQuery.noConflict = function( deep ) {
        if ( window.$ === jQuery ) {
            window.$ = _$;
        }
    if ( deep && window.jQuery === jQuery ) {
            window.jQuery = _jQuery;
        }
        return jQuery;
    };

        如果我们需要同时使用jQuery和其他JavaScript库,我们可以使用 $.noConflict()把$的控制权交给其他库。旧引用的$ 被保存在jQuery的初始化; noConflict() 简单的恢复它们。
        通过类似swap交换的概念,先把之前的存在的命名空间给缓存起来,通过对比当前的命名空间达到交换的目的,首先,我们先判断下当前的的$空间是不是被jQuery接管了,如果是则让出控制权给之前的_$引用的库,如果传入deep为true的话等于是把jQuery的控制权也让出去了。
        如果不通过noConflict处理的话其后果可想而知,香喷喷的$大家都“觊觎已久”。

    慌慌张张 匆匆忙忙 为何生活总是这样 难道说我的理想 就是这样度过一生的时光 不卑不亢 不慌不忙 也许生活应该这样 难道说六十岁以后 再去寻找我想要的自由 其实我也常对自己说 人要学会知足而常乐 可万事都一笑而过 还有什么意思呢
  • 相关阅读:
    服务器×××上的MSDTC不可用解决办法
    安装VS2010后,更改iis的asp.net版本
    刷新后 页面 保持滚动条位置
    Atitit.java 反编译 工具  attilax 总结
    Atitit.收银系统模块架构attilax 总结
    Atitit.论垃圾文件的识别与清理 文档类型垃圾文件 与api概要设计pa6.doc
    atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29
    Atitit. Derby的使用总结attilax
    Atitit.attilax的 case list 项目经验 案例列表
    Atitit.收银系统pos 以及打印功能的行业标准
  • 原文地址:https://www.cnblogs.com/siwy/p/4867592.html
Copyright © 2011-2022 走看看