解决jquery$命名符和其它框架的冲突问题
2012-08-09 11:55
281 查看
jquery提供了一个noConfilict的API来解决冲突。
使用方法:
jQuery.noConflict():运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
jQuery.noConflict(true):将$和jQuery的控制权都交还给原来的库。
第一种:
第二种:
第三种:
第四种:
第五种:
noConfilict的源码:
在jquery源码的最开头定义了:
当deep为空的时候,“_$”覆盖“window.$”,“$”的常规功能失效,但jQuery还可以继续使用。当有新的库中重新定义“$”的时候,“jQuery”继续为jQquery的常规功能,而“$”就不是jQuery中的了,它是属于新的库的常规功能;
当deep不为空的时候,它将“_jQuery”覆盖“window.jQuery”,这样导致可能jQuery插件失效;另外方法返回的jQuery,实际上没有被覆盖。通过它完全可以移到新的一个命名空间,如dom.query = jQuery.noConflict(true); dom.query("div p").hide();
使用方法:
jQuery.noConflict():运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
jQuery.noConflict(true):将$和jQuery的控制权都交还给原来的库。
第一种:
jQuery.noConflict(); // Do something with jQuery jQuery("div p").hide(); // Do something with another library's $() $("content").style.display = 'none';
第二种:
jQuery.noConflict(); (function($) { $(function() { // more code using $ as alias to jQuery }); })(jQuery); // other code using $ as an alias to the other library
第三种:
jQuery.noConflict()(function(){ // code using jQuery }); // other code using $ as an alias to the other library
第四种:
var j = jQuery.noConflict(); // Do something with jQuery j("div p").hide(); // Do something with another library's $() $("content").style.display = 'none';
第五种:
var dom = {}; dom.query = jQuery.noConflict(true); // Do something with the new jQuery dom.query("div p").hide(); // Do something with another library's $() $("content").style.display = 'none'; // Do something with another version of jQuery jQuery("div > p").hide();
noConfilict的源码:
noConflict: function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; },
在jquery源码的最开头定义了:
(function(){ var // _jQuery = window.jQuery, _$ = window.$, // })(); 为了防止$和就jQuery被覆盖而进行保存。
当deep为空的时候,“_$”覆盖“window.$”,“$”的常规功能失效,但jQuery还可以继续使用。当有新的库中重新定义“$”的时候,“jQuery”继续为jQquery的常规功能,而“$”就不是jQuery中的了,它是属于新的库的常规功能;
当deep不为空的时候,它将“_jQuery”覆盖“window.jQuery”,这样导致可能jQuery插件失效;另外方法返回的jQuery,实际上没有被覆盖。通过它完全可以移到新的一个命名空间,如dom.query = jQuery.noConflict(true); dom.query("div p").hide();
相关文章推荐
- 解决jquery$命名符和其它框架的冲突问题
- 用闭包解决jQuery和其它框架的$符号冲突的问题
- jQuery源码分析:如何解决jQuery、$关键字与其它脚本框架的冲突问题?
- 完美解决jQuery符号$与其他javascript 库、框架冲突的问题
- Jquery与其它js框架(MooTools以及Prototype、Dojo、YUI等等)之间共享冲突的解决办法
- jquery使用$与其它js框架的冲突解决办法
- DWZ和ASP.NET MVC等框架的冲突问题解决方案 分类: 技巧总结 2015-04-07 14:46 188人阅读 评论(0) 收藏
- OC 静态库.a引用第三方框架冲突解决问题
- DWZ和ASP.NET MVC等框架的冲突问题解决方案
- 解决 jQuery 符号 $ 与其他 javascript 库、框架冲突的问题
- JQuery选取器与其它JS框架冲突的解决方法 确保jQuery不会与其他库的$对象发生冲突
- 解决jquery与zepto等其它库冲突兼容的问题
- 完美解决jQuery符号$与其他javascript 库、框架冲突的问题
- [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题
- 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题
- jQuery对象与DOM对象互换,解决框架间冲突
- 从源码角度看滑动冲突问题的解决
- 解决鼠标中键与浏览器冲突的问题
- maven框架下遇到的问题及解决方法
- 报错问题 关于在框架中 jar包冲突