[英]JavaScript does not work on page reload [Rails]?
这是我的 JavaScript:
function showQuestion(id) {
$(".question").hide();
$("#"+id).show();
}
$(document).ready(function() {
current_question=1;
showQuestion(current_question);
$("#next_question").click(function(){
alert('The current question is '+current_question);
current_question=current_question+1;
showQuestion(current_question);
});
$("#prev_question").click(function(){
alert('The current question is '+current_question);
current_question=current_question-1;
showQuestion(current_question);
});
});
这是我的show.html.erb
[我的 Rails 视图]:
<div id="questions">
<% @questions.each_with_index do |q,i| %>
<div id="<%= i + 1 %>" class="question">
<strong><%= q.body %></strong>
<% if q.type == "MultipleChoice" %>
<% q.choices.each do |choice| %>
<br /><%= radio_button_tag "question#{q.id.to_s}", "choice#{choice.id}", @answer == choice %> <%= choice.body %>
<% end %>
<% end %>
<table>
<tr><td><%= link_to "< Previous", '#', :remote => true, :id => "prev_question" %></td><td><%= link_to "Next >", '#', :remote => true, :id => "next_question" %></td></tr>
</table>
</div>
<% end %>
</div>
因此,当我单击“下一个”或“上一个”按钮时,它会起作用。 但在那之后,两个按钮都不起作用。 我感觉这与 jQuery 无法正常工作有关。 谢谢!
如果我正确理解了代码(我不知道 ruby),那么您的 ID 应该是唯一的。 您正在创建许多具有相同 ID 的按钮。 jQuery 仅附加到第一个(因为应该只有一个)。
尝试将其更改为 class。 或者(可能更好),从循环中删除按钮,只创建一组按钮。
编辑:另外,虽然这可能不会导致问题,但 ID 不应以数字开头,除非您使用 HTML5,我认为这可能允许这样做。
你真的很亲近!
问题是您正在为每个具有相同 ID 的问题生成一组链接,这是不正确的。 当您第一次单击其中一个时,听起来第一组链接被隐藏了。
一种解决方案是将带有“上一个”和“下一个”链接的表格移到包含它的标签之外。 这是一个小提琴,显示了您的代码的简化版本,其中包含问题 div 之外的 prev 和 next 链接。 http://jsfiddle.net/QNLF9/
您也可以将链接保留在问题 div 中,为其分配 class 并在 jQuery 代码中使用 class 选择器。 这是一个例子。 http://jsfiddle.net/traDx/
我希望这会有所帮助。 还有一件小事。 您应该使用 html 转义码<
和>
而不是<
和>
分别。 快乐编码!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.