![](/img/trans.png)
[英]Javascript not working after rendering partial rails when I used Turbolinks
[英]Javascript not working after rendering partial rails
<% 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
也不會淡入
注意:兩個按鈕都在上方的渲染部分內。
這是因為render
partial
只是在瀏覽器運行javascript
之前在視圖中插入HTML。 在這種情況下, DOM
事件處理程序將變為非活動狀態。
要解決此問題,只需將您的DOM
綁定到document
內,即使ajax
調用后,它也可使處理程序保持活動狀態。
<% 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();
$(document).ready(function() {
$("#process-question-submit").fadeOut();
$("#finish-test-button").fadeIn();
});
<% end %>
<% end %>
你有嘗試過嗎?
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;}
首先#finish-test-button {display: block;}
來確保其顯示出來,從而進行故障排除。
如果這些都不起作用,請嘗試將Javascript淡入部分的按鈕中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.