2013-05-10 76 views
1

我在一個頁面上有幾個表格,每個表格可能有多個下拉列表。表格和下拉列表是自動生成的。我想要定位的表具有數字ID,並且所有下拉列表的值都是數字。jquery在表格中隱藏額外的下拉列表

因爲我想其中一個表

HTML示例代碼到目標

<table id="15"> 
<tr> 
    <td> 
    <div id="dd_4_0"> 
    <select id="4_0"> 
    <option value=""></option> 
    <option value="18">VNDR64324</option> 
    <option value="21">MFG5321</option> 
    <option value="27">OTHER</option> 
    </select> 
    </div> 
    </td> 
</tr> 
<tr> 
    <td> 
    <div id="dd_2_6"> 
    <select id="2_6"> 
    <option value=""></option> 
    <option value="12">VN32R2345</option> 
    <option value="21">5678</option> 
    <option value="27">NEM</option> 
    </select> 
    </div> 
    </td> 
</tr> 
</table> 

一旦在表中的下拉列表中的一個選擇,我想隱藏其他的下拉列表中。 我有代碼可以工作,但有很多迭代循環,如果可能,我希望不做。有沒有更清晰的方式來寫這個?

$('table').click(function() { 
    if($.isNumeric(this.id)) 
     dd = $("#" + this.id + " select"); 
     $.each(dd, function(){ 
      if($.isNumeric($(this).val())) 
      { 
       selectedId = this.id; 
       $.each(dd, function(){ 
        if(this.id != selectedId) 
         $('#dd_' + this.id).hide(); 
       }); 

      } 
     }); 
}); 
+0

您無權修改生成表的代碼嗎?添加幾個類可以讓你的生活更輕鬆。 – 2013-05-10 19:29:14

+0

'2_6'不是數字。 – Barmar 2013-05-10 19:32:47

+0

是的,全是我的,所以我可以在那裏編輯任何東西。然而,這就是說我的下拉列表都是選中的下拉列表,它是一個jQuery插件,它添加了自己的類並進行了一些重複,這使得增加額外的類變得困難。 – jessier3 2013-05-10 19:32:53

回答

0

我想補充一個公共類相關的表,然後做到這一點:

$(".table_class select").change(function(){ 
    var $this = $(this); 

    if($this.val() != ""){ 
     $this.closest(".table_class").find("select").not($this).hide(); 
    } else { 
     // if you want, re-show them if the select is de-selected 
     $this.closest(".table_class").find("select").show(); 
    } 
}); 
+0

這兩種解決方案都非常合理,應該可以工作,但我還沒有得到它們。可能是我的代碼中的其他內容導致問題。儘管感謝您的輸入! – jessier3 2013-05-14 15:09:43

0

一旦在表中的下拉列表中的一個選擇,我想隱藏其他的下拉列表中。

我不知道如果我得到你,但最短的方法(我能想到的..)將被調用change()事件select

試試這個

$('select').change(function(){ 
    $(this).parents('tr').find('select').not($(this)).hide(); 
}); 

然而,這個選擇文檔中的所有select元素......如果你確定表中沒有其他選擇元素或頁面中的任何其他元素...那麼這應該工作...否則你可以向每個元素添加類表格和呼叫選擇器僅用於選擇...

working fiddle here

+0

我在表格示例中犯了一個錯誤。所有的下拉列表都在他們自己的tr標籤以及他們自己的tds中。有沒有辦法修改父母('tr')來引用表格? – jessier3 2013-05-10 19:46:49

+0

是的......用'table'代替'tr' ......但是請注意,你會選擇所有父母的表格......只要你沒有任何表格包裝這張表格......這個工作就可以了。示例小提琴http://jsfiddle.net/bipen/TD4cH/1/ – bipen 2013-05-10 19:49:12

+0

這兩種解決方案都非常合理,應該可以工作,但我還沒有得到它們。可能是我的代碼中的其他內容導致問題。儘管感謝您的輸入! – jessier3 2013-05-14 15:01:38

相關問題