您的位置:首页 > Web前端 > JQuery

jQuery与prototype(ajaxpro)冲突的解决方法

2009-06-04 11:36 477 查看
现在公司的项目啥都要使用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的源代码。
解决方法:

<script type="text/javascript">

var fnArrayPush = Array.prototype.push;

$().ready(function(){

Array.prototype.push = fnArrayPush;

init();

});

</

另外,提一下,网上他们说的:jQuery.noConflict();在最新的jQuery1.32中已经不复存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: