質問する
6155 次
5 に答える
11
もう一方を変更しようとすると、最初の変更イベントが再帰的に発生します。
本当に?通常、値を変更してもイベントは発生しません。使うだけ
var bothselects = $("#first-select, #second-select");
bothselects.change(function(e) {
bothselects.val(this.value); // "this" is the changed one
// do whatever else you need to do
});
于 2013-01-10T23:08:02.190 に答える
4
オプションを値ではなくインデックスで一致させたい場合は、次のようにします。
HTML:
<select class="synch">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<select class="synch">
<option value="AA">AA</option>
<option value="BB">BB</option>
<option value="CC">CC</option>
</select>
javascript:
var $synch = $(".synch").on('change', function() {
$synch.not(this).get(0).selectedIndex = this.selectedIndex;
});
再帰が問題になるはずだとは思えません。プログラムで変更する<select>
と「変更」イベントが発生しますが(発生しません)、最初の同期後、2つのインデックス(または値)は一致し、それ以上の変更は発生せず、発生する必要もありません。したがって、変更、変更イベント、および再帰はありません。
于 2013-01-10T23:19:23.460 に答える
1
これを試して:
var $selects=$('#select_1,#select_2').change(function(){
$selects.not(this).val( $(this).val() );
})
于 2013-01-10T22:53:35.777 に答える
1
$("#select1").change(function(){
$("#select2").val($("#select1").val())
});
$("#select2").change(function(){
$("#select1").val($("#select2").val())
});
この機能のライブデモをここで見ることができます
于 2013-01-10T22:54:21.890 に答える
0
変更ハンドラーで、値が異なる場合にのみ他の選択を更新し、値が一致する場合は何もしません。これは再帰を壊します。
于 2013-01-10T22:50:04.927 に答える