Jquery:如何禁用兄弟姐妹下拉值

时间:2016-01-29 01:33:28

标签: javascript jquery

我有一张这样的桌子:

<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");
});

My Fiddle

如果我在此下拉列表中选择1,我如何禁用兄弟姐妹值,但我不能再次在另一个下拉列表中选择1。这是工作example,无需table / td /即可完美运行。我的要求是使用表tr / td。我尝试使用:$(this).closest('tr').siblings(".go") 但它不起作用。任何想法?

3 个答案:

答案 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")