2011-03-28 64 views
1

我的HTML代码jQuery的:如何显示的内容的数量,我们希望

<div class="content"> 
    Question : <input type="text" size="30"/><br /> 
    Answer A : <input type="text" size="30"/><br /> 
    Answer B : <input type="text" size="30"/><br /> 
    Answer C : <input type="text" size="30"/><br /> 
    Answer D : <input type="text" size="30"/><br /> 
    Correct Answer : 
     <input type="radio" name="a"/> A 
     <input type="radio" name="b"/> B 
     <input type="radio" name="c"/> C 
     <input type="radio" name="d"/> D 
</div> 

Please select the number of questions you want to display 
<select class="choice"> 
    <option selected="selected">Select</option> 
    <option value="2">2</option> 
    <option value="4">4</option> 
</select> 

<div class="display"> 

</div> 

,这里是jQuery代码来处理

$(document).ready(function(){ 
     $(".content").hide();  

     $("select.choice").change(function(){ 
      var i = parseInt($(this).attr("value")) ; 
      var j; 
      for(j = 1; j<=i ; j++){ 
       $(".content").show().appendTo($(".display")); 
      } 
     }); 
    }) 

但结果是只能显示一个问题尽管我选择了选项“2”。那么当我选择该选项时,如何显示问题的数量?

谢谢!

回答

1

您需要克隆

$(".content").clone().appendTo($(".display")).show(); 

基本上你的代码移动。内容到。显示的内容,所以当你遍历没有什么。内容第一遍之后。如果你使用clone(),它会克隆它或复制它而不移动它。

您还应该将.show()复制到末尾。否则,您将显示原始文件,而不是.display中的克隆。

+0

从http://api.jquery.com/appendTo/:“如果选择了这样的元素在其它地方插入后,它将被移动到目标(未克隆):” – JackWilson 2011-03-28 14:14:57

+0

这就是为什么你使用克隆()第一。因为你正在移动克隆而不是原来的。你想实际移动克隆。 – Mark 2011-03-28 14:17:35

+0

'$(“。content”)'会导致问题。循环1:'$( “内容 ”)的长度= 1'循环2:( “内容”)。'$(“ 内容”)的长度= 2',你将结束与'$长度= 3 '当你选择'2'时,或者调用'.first()'或者创建一个模板来克隆。 – 2011-03-28 14:18:15