<table class="mytable">
<tr>
<td>
<select class="go">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
<tr>
<td>
<select class="go">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
<tr>
<td>
<select class="go">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
<tr>
<td>
<select class="go">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
<tr>
<td>
<select class="go">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
</table>
和我的jquery代码如下:
$(".go").change(function(){
var selVal=[];
$(".go").each(function(){
selVal.push(this.value);
});
$(this).closest('tr').siblings(".go").find("option").removeAttr("disabled").filter(function(){
var a=$(this).parent("select").val();
return (($.inArray(this.value, selVal) > -1) && (this.value!=a))
}).attr("disabled","disabled");
});
如果我在此下拉列表中选择1,我如何禁用兄弟姐妹值,但我不能再次在另一个下拉列表中选择1。这是工作example,无需table / td /即可完美运行。我的要求是使用表tr / td。我尝试使用:$(this).closest('tr').siblings(".go")
但它不起作用。任何想法?
答案 0 :(得分:2)
尝试将tr
传递给.siblings()
$(this).closest("tr").siblings("tr").find("option")
jsfiddle http://jsfiddle.net/ev5qvprv/122/
答案 1 :(得分:1)
你可以先找到最近的桌子然后找到&#34; .go&#34;除了当前的
答案 2 :(得分:0)
您使用的选择器不正确。
$(this).closest('tr').siblings(".go").find("option")
这不会给你任何结果,因为tr
没有兄弟.go
。
您有两个选择器解决方案:
$(this).closest('tr').siblings("tr").find("option")
或
$('table.mytable').find("option")