jQuery - 如果在表tr中有4个td做某事

时间:2017-07-15 18:28:38

标签: javascript html html-table

我试图从内部少于4 td 中删除任何 tr

因此,例如,在此表中,我希望第二个tr消失:

HTML

<table>
  <tbdy>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

我正在尝试这样的事情

的jQuery

if ($('table tbody tr td').length >= 4) {
  //4 i ok so do nothing
} else {
  $(this).parent("tr").remove();
}

但我无处可去。 有什么帮助吗?

3 个答案:

答案 0 :(得分:5)

将jQuery :has()选择器与:not():nth-child()伪类选择器一起使用。

$('tr:not(:has(:nth-child(4)))').remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

或者,使用filter()方法过滤掉仅包含td小于4的元素并删除。

$('tr').filter(function() {
  return $(this).children('td').length < 4;
}).remove()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
      <td>4</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

答案 1 :(得分:3)

这应该有效:

$('table tbody tr').each(function() {
    var $tr = $(this);
    if ($tr.find('> td').length < 4) {
        $tr.remove();
    }
});

答案 2 :(得分:1)

你的结构应该是:

 <table>
  <tbody>
    <tr>

您可以选择:

$('table tbody tr')

要获得少于4列的所有tr,你应该遍历它们。

您的最终代码应为:

$('table tbody tr').each(function() {
    var row = $(this);
    if (row.find('td').length < 4) {
        row.remove();
    }
});