1

選択したリストの後にあるすべてのリストを削除したいという問題で立ち往生しています。ここでJSFiddleを作成しましたが、機能しません。たとえば、最初のドロップダウンからアイテムを選択した場合は次の2つを削除する必要があり、2番目のドロップダウンから選択した場合は3番目のドロップダウンを削除する必要があります。

HTML

<div id='levels'>
<select id="level" class="parent" name="data[level][]">
    <option value="1">1</option>
<option value="2">2</option>
    </select>
    <select id="level" class="parent" name="data[level][]">
    <option value="3">3</option>
<option value="4">4</option>
    </select>
 <select id="level" class="parent" name="data[level][]">
    <option value="5">5</option>
<option value="6">6</option>
    </select>   
    </div>

Javascript

$("#levels").on('change', function() {
    $(this).nextAll().remove();

    });​

各リストに異なるクラス名またはdiv名を割り当てずにこれを実現したいと思います。

Cakephpコード

マスターファイル

<script type="text/javascript">
$(document).ready(function() {


 $("select").on('change', function() {
    $(this).nextAll('select').remove();
        $("<div>").load('/dashboard/details/show_levels',function() {
    $("#levels").append($(this).html());

});
})


<div id=levels>

    <?php echo $form->input('level',array('options'=>$level,'type'=>'select','scroabble'=>true,'multiple'=>true, 'class'=>'parent')); ?>
</div>


});

show_levels

<?php
$abc=array('a','b','c','d');
echo $form->input('level',array('options'=>$abc,'type'=>'select','scroabble'=>true,'multiple'=>true, 'class'=>'parent')); ?>

アップデート:

次のソリューションは私のために働いた

交換済み

 $(this).nextAll('select').remove();

$(this).parents().nextUntil().remove();

それがどのように機能したか、そして2つの違いは何であるかわからない。

4

4 に答える 4

4

これを試して

$("select").on('change', function() {
$(this).nextAll('select').remove();
});​  

フィドル

于 2012-10-17T05:03:18.133 に答える
2

remove「非表示」と言ったように、それらが必要かどうかはわかりませんがchange、シナリオに使用するには、次のようなものを使用できます。

$(document).ready(function () {
    $("#levels").on("change", ".parent", function () {
        $(this).nextAll().hide();
    });
});

ところで、すべての要素に「レベル」があるわけではなく、<select>要素に固有の属性が必要です。id

私にとってより理にかなっているのは、次のようなものです。

http://jsfiddle.net/HRh2d/

于 2012-10-17T05:05:55.253 に答える
1

次の解決策は私のために働いた

交換済み

 $(this).nextAll('select').remove();

$(this).parents().nextUntil().remove();

それがどのように機能したか、そして2つの違いは何ですか。

于 2012-10-19T13:15:31.633 に答える
-1

nextAll の代わりに .siblings() を試してください

また、選択には一意の ID が必要です

于 2012-10-17T05:04:48.150 に答える