如何使用 jquery 查找上一个 td 元素

Moj*_*aSh 5 jquery html-table

我有一张这样的桌子

<table>
    <tr><td id="space_bet1" height="10"></td></tr>
    <tr><td id="unscr1">Today</td></tr>
    <tr><td id="space_bet2" height="10"></td></tr>
    <tr><td id="unscr2">Tomorrow</td></tr>
    <tr><td id="space_bet3" height="10"></td></tr>
    <tr><td id="unscr3">Yesterday</td></tr>
    <tr><td id="space_bet4" height="10"></td></tr>
    <tr><td id="unscr4">next week</td></tr>
    <tr><td id="space_bet5" height="10"></td></tr>
    <tr><td id="unscr5">next month</td></tr>
    <tr><td id="space_bet6" height="10"></td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我想在 space_bet3 之前找到 td,我尝试了 prev() 方法,但它无论如何都不起作用

alert($("#space_bet3").prev().prev().attr("id"))  // undefined error
alert($("#space_bet3").prev("#space_bet2").attr("id"))  // undefined error
Run Code Online (Sandbox Code Playgroud)

我这样做有什么错?如何在space_bet3之前找到id,谢谢

Tus*_*har 9

<td>由于该元素之前没有sibling( ) #space_bet3,prev()因此它将返回空集。

  1. 获取<tr>祖先
  2. 获取上<tr>一个兄弟姐妹
  3. 接孩子们<td>
  4. 获取id属性值。

代码:

$('#space_bet3')
    .closest('tr') // Get first ancestor `<tr>` element
    .prev() // Get previous element
    .children('td') // Get direct descendant `<td>` element
    .attr('id'); // Get `id` of the element
Run Code Online (Sandbox Code Playgroud)

$('#space_bet3')
    .closest('tr') // Get first ancestor `<tr>` element
    .prev() // Get previous element
    .children('td') // Get direct descendant `<td>` element
    .attr('id'); // Get `id` of the element
Run Code Online (Sandbox Code Playgroud)
var id = $('#space_bet3')
  .closest('tr') // Get first ancestor `<tr>` element
  .prev() // Get previous element
  .children('td') // Get direct descendant `<td>` element
  .attr('id'); // Get `id` of the element

console.log(id);
Run Code Online (Sandbox Code Playgroud)