这是我的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无法正常工作有关。谢谢!
答案 0 :(得分:0)
如果我正确理解代码(我不知道ruby),您的ID应该是唯一的。您正在创建许多具有相同ID的按钮。 jQuery只附加到第一个(因为应该只有一个)。
尝试将其更改为类。或者(可能更好),从循环中删除按钮,只创建一组按钮。
编辑:此外,虽然这可能不会导致问题,但ID不应该以数字开头,除非您使用HTML5,我认为可能允许这样做。
答案 1 :(得分:0)
你真的很亲密!
问题是您为每个具有相同ID的问题生成一组链接,这是不正确的。听起来第一次点击其中一个时,第一组链接就被隐藏了。
一种解决方案是使用包含它的标记之外的Previous和Next链接移动表。这是一个小提示,显示代码的简化版本以及问题div之外的prev和next链接。 http://jsfiddle.net/QNLF9/
您也可以将链接留在问题div中,为它们分配一个类,并在jQuery代码中使用类选择器。这是一个例子。 http://jsfiddle.net/traDx/
我希望有所帮助。另一件小事。您应该分别使用html转义码<
和>
而不是<
和>
。快乐的编码!