解决jquery版本冲突的有效方法教程
用过jquery的朋友都知道jquery不同版本会引发冲突,本文就此问题提出有效的解决方案如下:
案例:解决jquery1.3.2和1.4.2的冲突。(本例已测试通过!)
第一步:在1.4.2的源代码的最后加上一句 :
var $j4 = jquery.noconflict(true);
之所以在这里加,而不是像大多数文章提的在要用到的时候加,这是因为很多基于1.4.2的插件都要加,在这里加可以避免过多插件加这句代码导致重复。这一句是将1.4.2的jquery和$的引用权限全部放弃。也就是基于1.4.2的插件不能再用jquery和$了。同时给予$j4的新的命名空间,注意它是window的属性。看1.4.2的源代码会发现它其实也就执行了这两句:
window.$=_$; window.jquery=_jquery;
道理同window.$=_temp$(返还命名空间)只是命名不同而已。
第二步:在基于1.4.2的框架的所有插件的头部加上以下代码:
var _temp$ = window.$,_tempjquery = window.jquery;
将jquery1.3.2的$和jquery放到临时的变量空间上:
window.$ = $j4;
这句和下面的那句都是为了给中间的代码能够正确使用jquery和$用的。后面的$j4是赋予他们正确的引用。
window.jquery = $j4;
之所以要先放临时变量存储,有三点必须这样做的理由:
①.我们不希望改动大量的jquery插件源代码,最好是不动,即使改的话,尽量改的少。而在头部尾部加改动代码,中间的原始代码不动也是不错的一种方式。
②.因为1.4.2的已经放弃了jquery和$的控制权,但是已有的插件代码又用了他们来做引用,因为插件不可能预知冲突,即使有冲突他人开发的插件也一定要用$或者jquery引用,除非它不是jquery下的插件。
③.为了防止插件里面直接用window.$和window.jquery进行引用从而导致引用到1.3.2的jquery和$,虽然这种情况比较少,但是以防万一。
中间的原始代码不动,尾部加以下代码:
window.$ = _temp$;//将$的引用权限返还给jquery1.3. window.jquery = _tempjquery;//将jquery的引用权限返还给jquery1.3.
第三步:以后要用基于jquery1.4.2的选取函数就只能用$j4(element)了。
总结:到目前为止可行方案:jquery1.4.2完全放弃$和jquery的控制权限。1.3.2放弃$的控制权限但不放弃jquery的权限,其实jquery也可放弃,只不过要给个别名$j3。prototype最好放在jquery1.3.2后面,它获得$的控制权限。只是以后要用jquery1.4.2就必须用$j4来引用了。但这样即使有再多的jquery框架版本冲突问题,也全部解决掉了。假如来了个1.2的jquery怎么办,参照(2)的执行步骤,只不过第一步改为:
var $j2 = jquery.noconflict(true);
第三步用$j2(element)罢了。道理都是相同的。
上一篇: 付费评论对搜索引擎优化的好处
推荐阅读
-
解决自定义$(id)的方法与jquery选择器$冲突的问题
-
html文件中jquery与velocity变量中的$冲突的解决方法
-
Jquery Post处理后不进入回调的原因及解决方法教程
-
android基础教程之android的listview与edittext冲突解决方法
-
windows10系统电脑提示以太网没有有效的ip配置的解决方法图文教程
-
jquery mobile页面跳转后样式丢失js失效的解决方法教程
-
JQuery中使用ajax传输超大数据的解决方法教程
-
transport.js和jquery冲突问题的解决方法
-
解决jquery版本冲突的有效方法教程
-
win10系统提示没有有效的IP配置的原因分析及两种解决方法图文教程