jQuery和Prototype之间的冲突

时间:2011-04-30 21:20:41

标签: jquery ruby-on-rails-3 prototypejs conflict

我正在构建一个rails应用程序并安装这个名为“best-in-place”的gem进行一次性编辑。它工作了一段时间,但在我遇到jQuery和Prototype冲突后,它停止工作,现在我在尝试加载页面时收到此错误消息。

error http://dl.getdropbox.com/u/3481269/Screen%20shot%202011-04-30%20at%206.17.45%20PM.png

我包括jQuery和原型JS文件。

    <script src="/javascripts/jquery.js?1303396383" type="text/javascript"></script> 
<script src="/javascripts/rails.js?1303562965" type="text/javascript"></script> 
<script src="/javascripts/application.js?1303842064" type="text/javascript"></script> 

    <script language="javascript" type="text/javascript"> 
        $j = jQuery.noConflict();
    </script> 

    <script src="/javascripts/prototype.js?1303686720" type="text/javascript"></script> 
<script src="/javascripts/jquery.purr.js?1302145859" type="text/javascript"></script> 
<script src="/javascripts/best_in_place.js?1302150372" type="text/javascript"></script> 

你能帮助我解决导致这个错误的原因吗?

2 个答案:

答案 0 :(得分:4)

您正在将jQuery .noConflict()方法分配给$j,因此对于jQuery内容,您现在必须使用$j而不是$,例如$j(document).ready(...

答案 1 :(得分:0)

我假设最好的插件是针对jQuery的,所以如果我弄错的话,请原谅其余部分。除非你在你的应用程序中编写了大量依赖于Prototype的JS,否则我可能会放弃它而支持jQuery。这是pretty easy进行转换。

即使可以使用正确的命名空间,也不值得。两者之间存在大量重叠,并且会为代码增加额外的重量。一个JavaScript框架对于一个页面应该足够了! :)