2013-07-22 179 views
1

裏面我有我遍歷表的每一行的表,看起來像下面的東西(只是一些僞代碼)jQuery的 - 查找具有自定義屬性元素的錶行

<table> 
<tr><td>text11</td><td>text12</td><td><div customerid='1'>Customer 1</div></td></tr> 
<tr><td>text21</td><td>text22</td><td><div>Customer 2</td></tr> 
<tr><td><div customerid='2'>xxxx-yyyyy</div><td>text23</td><td>text33</td></tr> 
</table> 

。我需要找出具有自定義屬性的行中的元素,例如「customerid」,如上例所示。此搜索幾乎沒有要求。

  • 細胞是不固定的,其中該自定義屬性將出現
  • HTML元素類型是不固定在其上該自定義屬性將會出現。這意味着任何像$('div')等選擇器都沒有問題。
  • 搜索將在單獨的行級不在表級別

這裏是我試圖似乎回到「未定義」所有的時間來執行。

rows = $(self.find('tbody tr').each(function (rowIndex, element) { 
    var keyValue = getKeyValue($(element));     
})); 

function getKeyValue(row){ 
    return row.attr('customerid'); 
} 

.attr方法似乎不起作用。我已經調試過,以驗證'行'實際上是正確的表格行,HTML也是正確的,並且包含一個帶有我的自定義屬性的div的單元格。 任何建議將不勝感激。

感謝

+0

除了提供的答案之外,您應該考慮使用'data-'屬性而不是自己構建。 – CodingIntrigue

+0

這是一個自定義屬性並可配置。用戶可以決定使用任何屬性名稱。這個名字出現在插件的其中一個選項中。 – ByteBlocks

回答

3

使用屬性選擇[customerid]發現有這個屬性,不管這可能是元素。

例如,在每一行進行遍歷時,你可以這樣做:

rows = $(self.find('tbody tr').each(function (rowIndex, element) { 
    var keyValue = $(this).find("[customerid]").eq(0).attr("customerid"); 
})); 

或者,你可以通過查找與客戶ID的所有元素開始,然後往回走,找到它們出現的行:

self.find('tbody tr [customerid]').each(function() { 
    var keyValue = this.getAttribute("customerid"); 
    var $row = $(this).closest("tr"); 
}); 
+0

在我以前的替代嘗試中,我在選擇器中丟失了方括號。現在全部設置! – ByteBlocks

相關問題