jQuery多库共存处理
2015-10-10 17:06
681 查看
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处理的话其后果可想而知,香喷喷的$大家都“觊觎已久”。
相关文章推荐
- jQuery中ready与load事件
- jQuery插件的开发(一)
- PHP+Mysql+jQuery中国地图区域数据统计实例讲解
- jquery validation验证身份证号、护照、电话号码、email
- 支持触屏的jQuery响应式幻灯片展示插件Image Lightbox
- PHP+Mysql+jQuery文件下载次数统计实例讲解
- jQuery实现焦点图自动切换
- JQuery 对 Select option 的操作
- jQuery 有关select的操作
- [转载]jQuery学习之prop和attr的区别
- jquery选择器:获取父级元素、同级元素、子元素
- jQuery中的.height()、.innerHeight()和.outerHeight()
- jQuery 获取表单元素中值的方法
- jquery清空textarea等输入框
- 50个必备的实用jQuery代码段
- jQuery的validate 在ie9和火狐下能用 在ie8下无效解决方法。
- jquery跨域请求解决方案(我们寻找,我还没有添加验证)
- jQuery 代码的层定位滑动动画效果
- jQuery选择器全解
- 导入文件 jquery.js文件报红解决办法