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 に答える