内联Javascript在rails 3.1上重新呈现红宝石部分时无法正常工作

时间:2013-05-12 08:14:25

标签: javascript jquery ruby-on-rails ruby-on-rails-3.1

在我的项目中,我们在部分中使用内联javascript,它使用了一些实例变量。当我们在成功的ajax调用之后重新渲染那部分脚本没有运行时。

你能帮助我解决这个问题吗?

例如

_partial.html.erb

 <div class="someclass"></div>
 <script>
    $(document).ready(function(){
       $(".someclass").hide();
    });
 </script>

在从js.erb文件替换此部分时,脚本标记未运行。

3 个答案:

答案 0 :(得分:4)

您的页面已加载。 ready事件很久以前就已经过去了,现在没有人在听。

因此,如果您在Ajax加载的脚本中有$(document).ready,则代码将永远不会被执行。

解决方案:

删除“ready”事件并直接触发代码:

 <div class="someclass"></div>
 <script>
   $(".someclass").hide();
 </script>

答案 1 :(得分:2)

在我看来,在ajax成功事件上手动更新DOM后没有触发就绪事件,因此没有执行回调函数。

答案 2 :(得分:1)

最后,我发现我认为非常适合我的要求的答案是将javascript放入js.erb部分并在html.erb和其他js.erb files中相应地进行渲染。< / p>