检查是否在表的最后一行内触发了选择

时间:2019-03-20 14:13:24

标签: jquery

我有一张这样的桌子:

<table id="tabella">
<tbody>
  <tr>
    <td><input type="text" class="inp" value="some text 1"></td>
    <td>
      <select class="sel">
        <option value="1">ON</option>
        <option value="0">OFF</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="text" class="inp" value="some text 2"></td>
    <td>
      <select class="sel">
        <option value="1">ON</option>
        <option value="0">OFF</option>
      </select>
    </td>
  </tr>
  <tr>
    <td><input type="text" class="inp" value="some text 3"></td>
    <td>
      <select class="sel">
        <option value="1">ON</option>
        <option value="0">OFF</option>
      </select>
    </td>
  </tr>
</tbody>
</table>

我需要更改输入文本:

<input type="text" value="" id="i_text">

当我将inp设置为ON时,将输入sel的值放在同一tr上。但是只有当我更改“最后一个”表行的选择时。

因此,如果我在第一个tr中选择“开”,则什么都不会改变。 如果我在第二个tr中选择ON,则什么都不会改变。 如果我在第三/最后一个tr中选择“开”,则必须将#i_text设置为值some text 3

如何检查触发的选择是LAST行中的那个?

我不完整的小提琴:https://jsfiddle.net/fywuonxa/2/

1 个答案:

答案 0 :(得分:1)

一种方法是使用is()方法来检查closest()表行是否是更改选择框时last-child的{​​{1}}

tbody
$(function() {
  $('select').change(function() {
    if ($(this).closest('tr').is(':last-child')) {
      $('input#i_text').val('Last row select changed');
    } else {
      $('input#i_text').val('');
    }
  });
});