jQuery查找具有特定类的单元格的上一个表行

the*_*les 11 jquery

假设我有一个这样的表:

<table>
    <tr><td class="this-is-a-label">Label Cell</td></tr>
    <tr><td>Detail 1</td></tr>
    <tr><td class="selected">Detail 2</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我希望能够从"选定"单元格中获取之前的"标签单元格".

我的jQuery脚本应该是这样的:

$('.selected').each(function() {
    var label = $(this).parent().prev('tr td.this-is-a-label');
    //... do what I need with the label ...
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

有没有人有什么建议?

Nic*_*ver 14

你可以这样做:

$('.selected').each(function() {
  var label = $(this).closest('tr').prevAll('tr:has(td.this-is-a-label):first')
                     .children('td.this-is-a-label');
  //... do what I need with the label ...
});
Run Code Online (Sandbox Code Playgroud)

这不是理想的,它是一个相当昂贵的DOM遍历,如果你可以保证它总是落后2行,你可以这样做:

$(this).closest('tr').prev().prev().children('td.this-is-a-label')
Run Code Online (Sandbox Code Playgroud)

...这要快得多,这取决于你对标记的假设和保证,如果有任何确定性,你肯定可以加快速度.


Chr*_*her 5

怎么样:

var label = 
  $('.selected').parent().prevAll('tr').children('td.this-is-a-label')[0];
Run Code Online (Sandbox Code Playgroud)