jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
jQuery 自 2006 年诞生以来,一个发行了 1.x、2.x、3.x 这三个大版本,而在这三个大版本下又细分了许多小版本。
那么jquery不同版本冲突吗?
jQuery不同版本会引发冲突。那么怎么解决?
官方的解决方案就是jQuery.noConflict(),它的中文官方文档写的比较好,不过可能你看完还是不太懂怎么用,这里再通俗的解释一下。
使用方法
先看不用jQuery.noConflict()会有什么问题:
<script src="jquery-1.7.js"></script> <script src="jquery-1.11.js"></script> <script> // 现在window.$和window.jQuery是1.11版本: console.log($().jquery); // => '1.11.0' // 接下来的所有代码和插件都只能基于1.11版本,所有只兼容1.7版本的插件都直接挂掉 </script> <script src="myscript.js"></script>
正确姿势:
<script src="jquery-1.7.js"></script> <script src="jquery-1.11.js"></script> <script> // 现在window.$和window.jQuery是1.11版本: console.log($().jquery); // => '1.11.0' var __ = jQuery.noConflict(true); // 现在window.$和window.jQuery被恢复成1.7版本,只有__才代表1.11版本 console.log($().jquery); // => '1.7.0' // 可以通过 __ 访问1.11版本的jQuery了 console.log(__.jquery); // => '1.11.0' </script> <script src="myscript.js"></script>
原理
从上面代码就可以读懂jQuery.noConflict()的原理:
1、既然jq两个版本先后加载,就肯定只有一个生效,通常肯定是让老版本在上,新版本在下,让新版本在后面生效。
2、让生效的那个新版jQ做出一个让步,给自己换个名字比如__,然后把$和jQuery变量名重新交给前一个老版jQ。
3、这样两个版本的jQ都有了自己的名字,就可以并存了。
问题
虽然你写的代码可以用__,但是别人基于1.11版本写的插件不认这个变量,只认jQuery
变量,怎么解决呢?
1、什么也不改,直接先试试,假如基于1.11的插件也可以基于1.7,那就省事了。
2、万一不行,只能是修改插件了,由于插件都会用自执行函数包裹代码,所以只需修改一处即可:
(function ($) { // 代码体... })(jQuery);
将传入的jQuery
改成__
即可。
更多web前端开发知识,请查阅 HTML中文网 !!
以上就是jquery不同版本冲突吗?的详细内容,更多请关注易知道|edz.cc其它相关文章!