Rails 2“:默认”js与/ jQuery冲突

时间:2011-05-24 18:59:21

标签: jquery ruby-on-rails ajax

当我对jQuery和Rails'javascript_include_tag使用:defaults时,后者似乎会覆盖第一个。

例如,当我按此顺序放置元素时:

<%= javascript_include_tag "jquery-1.4.min.js" %>
<%= javascript_include_tag :defaults %>

...我可以使用Rails执行AJAX更新但不能对jQuery执行任何操作。 当我颠倒javascript_include_tag的顺序时,我可以访问jQuery但无法使用Rails运行AJAX请求。

我更喜欢做我的AJAX Rails(因为它需要更少的代码),但我也希望利用其他jQuery功能。知道该做什么或冲突在哪里?

Rails 2.3.5, jQuery 1.4

3 个答案:

答案 0 :(得分:2)

这里有两个简单的解决方案。使用jrails插件。它将引导您完成您需要做的事情。

或者在jQuery代码中使用jQuery代替$。

例如:

$('li').fadeOut();
// should be
jQuery('li').fadeOut();

他们会做同样的事情,但Rails使用Prototype,它也映射$,因此与jQuery冲突。

答案 1 :(得分:0)

您可以尝试使用$ j代替$ jQuery。

<script> var $j = jQuery.noConflict(); </script>

答案 2 :(得分:0)

请记住先添加默认值然后再添加jquery。冲突发生在prototype.js文件和jquery-1.4.2.min文件

之间
<%= javascript_include_tag  :defaults %>
<%= javascript_include_tag 'jquery-1.4.2.min' %>
<script>var $j = jQuery.noConflict();</script>

使用$ j代替$ like。

$j(document).ready(function() {
.............
});