【问题标题】:Remove TR with certain content [duplicate]删除具有某些内容的 TR [重复]
【发布时间】:2016-09-30 19:07:32
【问题描述】:

我有一个结构如下的表:

| 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.

但这不会产生任何结果。

【问题讨论】:

  • find 寻找一个选择器,它不是一个选择器,它不看文本。

标签: javascript jquery html


【解决方案1】:

您可以使用:contains 选择器。

$('table tr:contains(|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>

【讨论】:

    【解决方案2】:

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

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

    Fiddle

    【讨论】:

    • 这不会匹配文本,因为它不是 match() 中的正则表达式
    • 哦,真的吗? jsfiddle.net/0839n7sq
    【解决方案3】:

    你可以使用.endsWith

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

    这里实际发生的是我们正在寻找每行第一列的内容是否以|2结尾

    【讨论】:

      【解决方案4】:

      你必须找到 td which contains "|2":-

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

      这里是fiddle

      【讨论】:

        【解决方案5】:

        只需使用以下代码

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

        更新:

        限制只签入第一个 td,

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-26
          • 1970-01-01
          • 2014-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-03
          • 2018-07-15
          相关资源
          最近更新 更多