我怎样才能得到最后一个的价值?

Mar*_* AJ 3 javascript cookies jquery

我需要Emails点击所有复选框打印单词.我怎样才能做到这一点?这是我的HTML结构:

$('td input').on('change', function() {
  var header_name = $(this).closests('tr').sibilings('th').last().text();
  console.log(header_name);
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <th><input type="checkbox" class="all_checkboxes"></th>
      <th>Emails</th>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="email"></td>
      <td>email</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="gmail"></td>
      <td>gmail</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="aol"></td>
      <td>aol</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="chmail"></td>
      <td>chmail</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

Ror*_*san 6

首先你有一些错别字.closests()应该是closest()并且sibilings()需要siblings().

问题本身是因为您的DOM遍历不正确.当你瞄准的是一个完全不同的行时,你正试图查看被点击th的父级的兄弟.trinputth

为了解决这个问题,你应该使用closest()来获得table,那么find()tr:last,是这样的:

$('td input').on('change', function() {
  var header_name = $(this).closest('table').find('th:last').text();
  console.log(header_name);
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <th><input type="checkbox" class="all_checkboxes"></th>
      <th>Emails</th>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="email"></td>
      <td>email</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="gmail"></td>
      <td>gmail</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="aol"></td>
      <td>aol</td>
    </tr>
    <tr>
      <td><input type="checkbox" data-id="chmail"></td>
      <td>chmail</td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)