page contents

不同版本jquery冲突怎么解决?

解决方法:手在一个版本的jquery源码的最后使用jQuery.noConflict()方法,释放会“$”标识符的控制;然后将另一个版本的jQuery的“$”和jQuery放到临时的变量空间上,让两个版本jquery的“$”不冲突即可。

解决方法:手在一个版本的jquery源码的最后使用jQuery.noConflict()方法,释放会“$”标识符的控制;然后将另一个版本的jQuery的“$”和jQuery放到临时的变量空间上,让两个版本jquery的“$”不冲突即可。


用过jQuery的朋友都知道jQuery不同版本会引发冲突,那么如何解决版本冲突问题?

第一步:在1.4.2的源代码的最后加上一句 :

attachments-2021-05-y7GZpCtu60a248bb9b8f3.png之所以在源码这里加,而不是像大多数文章提的在要用到的时候加,这是因为很多基于1.4.2的插件都要加,在这里加可以避免过多插件加这句代码导致重复。这一句是将1.4.2的jQuery和$的引用权限全部放弃。也就是基于1.4.2的插件不能再用jQuery和$了。同时给予$j4的新的命名空间,注意它是window的属性。看1.4.2的源代码会发现它其实也就执行了这两句:

attachments-2021-05-1DpOZG3260a248db45135.png

道理同window.$=_temp$(返还命名空间)只是命名不同而已。

第二步:在基于1.4.2的框架的所有插件的头部加上以下代码:

attachments-2021-05-iQJ0EI5t60a24918356ed.png将jQuery1.3.2的$和jQuery放到临时的变量空间上:

attachments-2021-05-6xjlEc5060a2493a377b7.png这句和下面的那句都是为了给中间的代码能够正确使用jQuery和$用的。后面的$j4是赋予他们正确的引用。

attachments-2021-05-R3qmLdWk60a2495b8f95a.png

之所以要先放临时变量存储,有三点必须这样做的理由:

①.我们不希望改动大量的jQuery插件源代码,最好是不动,即使改的话,尽量改的少。而在头部尾部加改动代码,中间的原始代码不动也是不错的一种方式。

②.因为1.4.2的已经放弃了jQuery和$的控制权,但是已有的插件代码又用了他们来做引用,因为插件不可能预知冲突,即使有冲突他人开发的插件也一定要用$或者jQuery引用,除非它不是jQuery下的插件。

③.为了防止插件里面直接用window.$和window.jQuery进行引用从而导致引用到1.3.2的jQuery和$,虽然这种情况比较少,但是以防万一。

中间的原始代码不动,尾部加以下代码:

attachments-2021-05-yqTnws4P60a24975e5607.png

第三步:以后要用基于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)的执行步骤,只不过第一步改为:

attachments-2021-05-E99QACUY60a24990e184c.png

第三步用$j2(element)罢了。道理都是相同的。

更多编程相关知识,请访问:编程视频!!

以上就是不同版本jquery冲突怎么解决?的详细内容,更多请关注 第一PHP社区 其它相关文章!

0 条评论

请先 登录 后评论
五福
五福

12 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章