jQuery - 在表行中查找具有自定义属性的元素

时间:2013-07-22 12:39:07

标签: 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方法似乎不起作用。我已经调试验证'row'实际上是正确的表行,HTML也是正确的,并且包含一个带有div的单元格,其中包含我的自定义属性。 任何建议将不胜感激。

由于

1 个答案:

答案 0 :(得分: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");
});