1

このプラグインを使用しました: https://github.com/tuupola/jquery_chained

ドロップダウンをチェーンしましたが、イベントに基づいてチェーンをチェーン解除して再バインドしたい場合があります。

ここにいくつかの例があります:

<select id="first">
<option value="a">A</option>
<option value="b">B</option>
</select>

<select id="second">
<option value="c" class="a">C</option>
<option value="d" class="a">D</option>
<option value="e" class="b">E</option>
</select>

<input type="checkbox" value="1" id="unchain" />

Javascript は次のようになります。

$('#second').chained('#first');
$('#unchain').change(function(){
  if ($(this).prop('checked'))
  {
    // how to unchain the chained dropdown?
  }
});

試してみ$('#second').unbind('chained');ましたが、うまくいきませんでした。

なにか提案を?

4

1 に答える 1

2

チェーンされたプラグインは、select からすべての一致しないオプションをフィルタリングする#secondため、「チェーンを外す」(変更イベントからバインドを解除する) と、#secondselect の一部のオプションが切り取られます (つまり、永久に失われます)。

#secondチェーンを解除した後、オプションの完全なセットで選択を再初期化する場合にのみ機能します。したがって、次のようなことを行う必要があります。

$(function () {
    // remember #second select
    var secondCopy = $('#second').clone();
    $('#second').chained('#first');
    $('#unchain').change(function(){
        if ($(this).prop('checked')){
            $('#second').chained('#first');
        }
        else{
            $('#first').unbind('change');
            // remember selected value:
            var value = $('#second').val();
            // populate #second select with remembered options
            $('#second').html(secondCopy.html());
            // set saved value
            $('#second').val(value);
        }
    });
});

デモ。

于 2014-09-18T12:01:14.280 に答える