问问题
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>
编程方式更改确实触发了“更改”事件(它不会),那么在第一次同步之后,两个索引(或值)将匹配并且不会发生进一步的更改,也不需要发生。因此没有变化,没有变化事件,也没有递归。
于 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 回答