0

私はこれを解決するのに苦労しました。私が持っているのは、選択された親に基づいて動的に生成される、隣り合った親/子の選択ボックスです。

私がやりたいことは、1 レベル上を選択すると、選択した子オプションで選択した属性を削除することです。

次のコードは、私が何をしようとしているのかを説明しています。

    <div id="selectBoxes">
      <select>
        <option value=""></option>
        <option value="parent">Parent</option>
      </select>
      <select class="mySelect">
        <option value=""></option>
        <option value="child">Child</option>
      </select>
      <select class="mySelect">
        <option value=""></option>
        <option value="grandChild">Grandchild</option>
      </select>
    </div>
    <script type="text/javascript">
      $('select').change(function() {
          var $nextSelects = $(this).nextAll('.mySelect');
          $nextSelects.each(function() {
                $(this).find('option:selected').prop("selected" , false);
           });
      });
    </script>

例はここにあります

したがって、3 つのオプションがすべて選択されていて、最初の選択に戻り、2 つの子選択が選択解除されているとします。上記のコードは、FF と Chrome と IE 9 では機能しますが、IE 7 と 8 では機能しません。

.attr("selected" , "") & .removeAttr("selected") を使用してみましたが、IE ではまだ機能しません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

このようにしてみてください:

$('select').change(function () {
    var $nextSelects = $(this).nextAll('.mySelect');
    $nextSelects.each(function () {
        $(this).val('');
    }); 
});
于 2013-07-12T07:42:59.150 に答える
0

これは IE8 で動作しています。IE7 を持っていません。確認して元に戻してください。

$('select').change(function () {
    var $nextSelects = $(this).nextAll('.mySelect');
    $nextSelects.each(function () {
      $(this).val("").prop("selected", true); 
    });
});

デモ

2番目の方法

$('select').not(".mySelect").change(function () {      
    $(this).siblings('.mySelect').each(function () {
        $(this).find('option[value=""]').prop('selected', true);        
    });
});

デモ

以下も動作します

$(this).val("").prop("selected", true);

デモ

jQuery1.10 は IE6、7、8 ではサポートされていないことに注意してくださいここを参照してください

于 2013-07-12T08:20:52.827 に答える