我有这样的下拉菜单:
<select id="select1">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select id="select2">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
具有相同的选项。所有选项都应该是唯一的,因此一旦在一个组合框中选择了该选项,它应该从其他组合框中删除。因此,如果用户在select1中选择“1”,则select2中将只有选项“2”和“3”。
现在,jQuery disable SELECT options based on Radio selected (Need support for all browsers)提供了一个很好的解决方案,但是如何修改它以使用选择而不是单选按钮?
答案 0 :(得分:6)
这是你的意思吗?
这会删除#select2
中的#select1
所有内容:
$("#select2 option").each(function() {
if($("#select1 option[value=" + this.value + "]").length)
$(this).remove();
});
这是另一种删除所有重复项的替代方法:
$("select").each(function() {
var select = $(this);
select.children("option").each(function() {
$('select').not(select).children("option[value=" + this.value + "]").remove();
});
});
这会删除每个重复项,只留下它在其找到的第一个<select>
中的选项。
更新您的评论:
$("#select1").change(function() {
$("#select2 option[value=" + $(this).val()+ "]").remove();
});
答案 1 :(得分:1)
或者,如果选择具有相同顺序的相同选项。
$('select').change(function() {
var selectedIndex = $(this).find(':selected').index();
$('select').not(this).find('option:nth-child(' + selectedIndex + ')').remove();
)};
我认为这种方式更快(但不太容易阅读)。