热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jQuery多库共存处理

jQuery多库共存处理(来自慕课网)多库共存换句话说可以叫无冲突处理。总的来说会有2种情况会遇到:1、$太火热,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处理的话其后果可想而知,香喷喷的$大家都“觊觎已久”。


推荐阅读
author-avatar
蒋雨儿_824
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有