删除具有特定内容的TR

时间:2016-06-01 12:09:05

标签: javascript jquery html

我有一个具有以下结构的表:

| abc|1 | def | ghi |
| erg|1 | asd | dfg |
| sdf|2 | ghj | erd |
| tsd|2 | sdf | hgj |

我现在想要隐藏在tr中可以找到后缀|2的所有td。所以结果应该是:

| abc|1 | def | ghi |
| erg|1 | asd | dfg |

这是我的方法:

$('table tr').each(function() {
  $(this).find("\\|2").hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <td>bla|1</td>
    <td>sdf</td>
    <td>hfgh</td>
  </tr>
  <tr>
    <td>bla|1</td>
    <td>3sf</td>
    <td>gdfg</td>
  </tr>
  <tr>
    <td>bla|1</td>
    <td>sdf</td>
    <td>jfhj</td>
  </tr>
  <tr>
    <td>bla|2</td>
    <td>sdf</td>
    <td>hfgh</td>
  </tr>
  <tr>
    <td>bla|2</td>
    <td>3sf</td>
    <td>gdfg</td>
  </tr>
  <tr>
    <td>bla|2</td>
    <td>sdf</td>
    <td>jfhj</td>
  </tr>
</table>

jsfiddle

但这不会产生任何结果。

5 个答案:

答案 0 :(得分:1)

您可以使用:contains选择器。

col1|col2|col3|col4
ghf|456|test|account
ijk|789|travel|destination
$('table tr:contains(|2)').hide();

答案 1 :(得分:0)

这不是.find()的工作方式。试试这个:

$('table tr').each(function() {
  if ($(this).children('td').eq(0).text().match("\\|2")) {
    $(this).hide();
  }
});

Fiddle

答案 2 :(得分:0)

您可以使用.endsWith

$('table tr').each(function() {
    var $this = $(this);
    if ($this.find('td').eq(0).text().endsWith("|2")) {
        $this.hide();
    }
});

这里实际发生的是我们发现每一行第一列的内容是否以|2

结束

答案 3 :(得分:0)

你必须找到contains“| 2”: -

的td
$(this).find('td:contains("|2")').parent('tr').hide();

这是fiddle

答案 4 :(得分:0)

只需使用以下代码

即可
$('tr:contains(|2)').hide();

更新

要限制只检入第一个td,

$('tr td:first-child:contains(|2)').parent('tr').hide();