jQuery与prototype(ajaxpro)冲突的解决方法
现在公司的项目啥都要使用ajaxpro来实现无刷新,而我又很习惯使用jquery和ext来实现ajax,暂且不讨论这个.今天说一下在使用jquery与ajaxpro冲突的问题现象以及解决方法.
ajaxpro使用了prototype框架,所以,此问题同样适用于prototyp.
问题主要有二:
1、window.$的对象的冲突。
the function $ in prototype frame only for get a dom element by id。
比起jquery中的$来远远不及。所以在使用jquery中的$时,就会被prototype的$给困惑。
不过还好,jquery已经提供了不同的方法来达到相同的效果。我不使用$直接使用jQuery来获取就OK了,或者我在引用jquery之后,并且在引用prototype之前马上给$赋给另外一个变量。如:window.g = window.$.之后,我就可以使用g()来实现$的效果,至于$就让给prototype去用吧。
2、Array.prototype.push方法冲突。
这个冲突很严重,直接导致jQuery的级联筛选无效。比如正常情况下,你可以使用$("span",$("#main"))来获取ID为main的元素下面的span元素。但如果页面中同时使用了prototype框架相关,那抱歉的很,你永远获取不到了。原因你可以调试跟踪自己查看jQuery的源代码。
解决方法:
Code
另外,提一下,网上他们说的:jQuery.noConflict();在最新的jQuery1.32中已经不复存在。