渲染部分rails后Javascript无法正常工作

时间:2016-01-16 12:08:48

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

<% if @questions_counter == 2 %>
  <% if @finish_btn == 0 %>
    $("#initial-question-frame").fadeOut('fast');
    $("#next-question-frame").html("<%= escape_javascript(render(:partial => "question", :locals => {:question => @question})) %>").fadeIn();
  <% else %>
    $("#initial-question-frame").fadeOut('fast');
    $("#next-question-frame").html("<%= escape_javascript(render(:partial => "question", :locals => {:question => @question})) %>").fadeIn();
    $("#process-question-submit").fadeOut();
    $("#finish-test-button").fadeIn();
  <% end %>

问题是,当@finish_btn = 1时,

#process-question-submit没有淡出, #finish-test-button淡出

注意:两个按钮都在上面的渲染部分内。

2 个答案:

答案 0 :(得分:1)

这是因为=SUMPRODUCT($C$2:$E$7,($C$1:$E$1=C$10)*($B$2:$B$7=$B11)) render只是在浏览器运行partial之前将HTML插入到视图中。在这种情况下,javascript事件处理程序将变为非活动状态。

要解决此问题,只需将DOM绑定在DOM内,即使在document调用后,您的处理程序仍会保持有效状态。

ajax

答案 1 :(得分:0)

你试过这个吗?

var _question = "<%= j render(:partial => 'question', :locals => {:question => @question}) %>";
$('#next-question-frame').empty();
$('#next-question-frame').append(_question);
$("#process-question-submit").fadeOut();
$("#finish-test-button").fadeIn();

您的Javascript应该可以运行,因此看起来部分可能无法正常呈现。如果这不起作用,您可以尝试进行故障排除,只需使用#finish-test-button {display: block;}首先显示部分内容,以确保其显示。

如果这些都不起作用,请尝试将Javascript淡入部分内的按钮。