1

我有一个根据对问题的回答添加 div 容器的过程。用户可以选择在任何时候重新开始。当用户执行此操作时,我想在某个时间点后删除所有容器。例如,这是您在 3 次响应后会看到的内容。

<div id="SolutionAdvisor">
    <div id="Col1"><div class="content">some content here</div></div>
    <div id="Col2"><div class="content">some content here</div></div>
    <div id="Col3"><div class="content">some content here</div></div> 
 </div>

如果用户决定回到问题 2,我希望看到:

  <div id="SolutionAdvisor">
    <div id="Col1"><div class="content">some content here</div></div>
    <div id="Col2"><div class="content">some content here</div></div> 
 </div>

我尝试过像这样使用 :gt 索引:

     $('#SolutionAdvisor div:gt('+column+')').remove();

也试过:

     $('#SolutionAdvisor div:gt('+column+')').each(function(){$(this).remove();});

其中列将是 1。

我看到的是这样的:

 <div id="SolutionAdvisor">
    <div id="Col1"><div class="content">some content here</div></div>
    <div id="Col2"><div class="content">some content here</div></div>
    <div id="Col2"><div class="content">some content here</div></div> 
 </div>

这样做的正确方法是什么?

4

3 回答 3

1

您可以从父 div 获取子列表作为 html 元素数组。然后,将每一个包装在一个 jQuery 调用中并按如下方式删除它们:

var maxQuestions = 2;

 children = $('#SolutionAdvisor').children();
 for (var i = maxQuestions; i < children.length; i++) {
     $(children[i]).remove();
 }

小提琴:http: //jsfiddle.net/stevenmtwhunt/YQusg/2/

使用 jQuery 选择器也有一些很酷的方法,我只是喜欢 for 循环的概念简单性。

于 2012-09-12T16:16:49.980 回答
0

您应该使用直接后代选择器,例如:

$('#SolutionAdvisor > div:gt(?)).remove():

另请注意,传递给的值gt()是零索引的。

此外,您可能希望对这些 div 进行分类,以便您可以直接访问它们,例如:

$('.responses:gt(?)').remove();
于 2012-09-12T16:09:42.623 回答
0

这是使用 .nextAll() 方法捕获输入值之后的所有元素的最佳方案。

$('#txt1').on('change' , function() {
        var quesNo = $(this).val();    
        $('#SolutionAdvisor div:nth-child('+quesNo+')').nextAll().remove();        
    });

在这里检查FIDDLE

于 2012-09-12T16:17:42.510 回答