我有一张桌子。每个单元格内都有很多下拉列表。列数可能会有所不同。并且每一行的下拉列表内容都是相同的。我想要的是当我从一个下拉列表中选择一个值时,该值必须从同一行的所有其他下拉列表中删除。
这是我的桌子
<table>
<tbody>
<tr class="row">
<td>
<select>
<option value="1">Option 1 of row 1</option>
<option value="2">Option 2 of row 1</option>
<option value="3">Option 3 of row 1</option>
</select>
</td>
<td>
<select>
<option value="1">Option 1 of row 1</option>
<option value="2">Option 2 of row 1</option>
<option value="3">Option 3 of row 1</option>
</select>
</td>
.....
.....
<tr>
<tr class="row">
<td>
<select>
<option value="a">Option a of row 2</option>
<option value="b">Option b of row 2</option>
<option value="c">Option c of row 2</option>
</select>
</td>
<td>
<select>
<option value="a">Option a of row 2</option>
<option value="b">Option b of row 2</option>
<option value="c">Option c of row 2</option>
</select>
</td>
.....
.....
<tr>
</tbody>
</table>
因此,当我选择“第 1 行的选项 1”时,必须从所有其他下拉列表中删除该选项。我如何使用 jquery 来实现这一点?
编辑:
如果用户第二次从已选择的下拉列表中选择另一个值,则应恢复先前替换的选项
编辑2:
我想出了如何使用 jquery id 选择器对一行执行此操作。我如何遍历所有行,即使用类选择器?下面是单行代码
$('#row_id td select').change(function(){
var values = [];
$('#row_id td select').each(function(){
if(this.value.length > 0)
values.push(this.value);
});
$('#row_id td select option').each(function(){
if($.inArray(this.value, values) > -1 && !this.selected)
$(this).attr("disabled","disabled");
else
$(this).removeAttr("disabled");
});
});
$('#row_id td select').change();//triggers initial change