【问题标题】:JQuery: Table Row Show/Hide based on rowJQuery:基于行的表行显示/隐藏
【发布时间】:2016-11-21 18:01:27
【问题描述】:

我有一个表,其中的某些行具有相同的值,例如 -

<table>
    <thead>
        <tr>
            <th>Players</th>
            <th>Country</th>
            <th>ZIP Code</th>
        </tr>
    </thead>>
    <tbody>
        <tr>
            <td>Jhon Doe</td>
            <td>USA</td>
            <td>53255343</td>
        </tr>
        <tr>
            <td>Jhon Doe</td>
            <td>USA</td>
            <td>53255343</td>
        </tr>
        <tr>
            <td>Etinee Gomes</td>
            <td>Ghana</td>
            <td>566682</td>
        </tr>
    </tbody>
</table>

我需要显示具有相同值的那些行的第一行。在这种情况下,第一行和第二行具有相同的数据,只需要显示第一行。如果表数据 (&lt;td&gt;) 不同,则保留它。是否可以使用 Jquery?

【问题讨论】:

  • 是的,有可能。您可能希望循环遍历每个 ,可能使用 jQuery 中的 $.each() 语句,然后在所有其他行中搜索每个 的值以查看它们是否匹配。尝试自己编写一些代码,如果遇到问题,请返回这里。
  • 这绝对可以用 jquery 实现!您只需要遍历每一行,建立一个索引 - 我建议将每个值一起散列到一个键 - 并检查该键是否已经在您的索引中。如果是这样,隐藏你的行。
  • 谢谢迈克尔。我已经更新了我的帖子。你能评论一下 jdfidde 的例子吗..
  • 谢谢@CupawnTae

标签: javascript jquery html css


【解决方案1】:

您可以遍历 tbody 的项目并查找 if/else 条件,如下所示:

var data = []
$('tbody tr').each(function() {
  var trdat = $(this).text().trim();
  if ($.inArray(trdat, data) !== -1) {
    $(this).hide()
  } else {
    data.push(trdat);
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Players</th>
      <th>Country</th>
      <th>ZIP Code</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Jhon Doe</td>
      <td>USA</td>
      <td>53255343</td>
    </tr>
    <tr>
      <td>Jhon Doe</td>
      <td>USA</td>
      <td>53255343</td>
    </tr>
    <tr>
      <td>Etinee Gomes</td>
      <td>Ghana</td>
      <td>566682</td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 您好 DaniP,谢谢您的回答。如果我还想考虑将更多文本视为隐藏之类 - 此处隐藏 Jhon Doe 并考虑 Jhon Doe A 也隐藏,那么该怎么做?
  • @JargoViet 我不明白你能用 jsfiddle 或 codepen 上的例子澄清一下吗
猜你喜欢
相关资源
最近更新 更多
热门标签