jQuery:根据列数据

时间:2018-03-01 22:28:17

标签: javascript jquery

我有一个简单的HTML表格,下面有一个HTML按钮,如下所示。



<h2>HTML Table</h2>

<table>
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>A</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>A</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>B</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>B</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>C</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>C</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>

<button type="button">Hide A</button>
&#13;
&#13;
&#13;

当我点击该按钮时,是否可以隐藏属于公司A的所有行?

我知道我可以使用$(selector).hide()隐藏元素,但我不确定如何根据某些值选择/隐藏某些行?

3 个答案:

答案 0 :(得分:1)

使用公司标识符为每一行添加一个类:

 <tr class="company-a">
    <td>A</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>

然后在你的jQuery中你可以这样:

$('.company-a').hide()

我添加了一个小提琴来展示它是如何工作的:https://jsfiddle.net/qmrkdesf/6/

答案 1 :(得分:1)

您可以执行以下操作:

(请注意,按标签名称选择元素是不好的做法。您应该添加一些数据属性,然后使用$('[data-my-table]')等。)

&#13;
&#13;
$(function() {
  $('button').on('click', () => {
    $('table td:first-child')
      .filter((_, cell) => $(cell).text() === 'A')
      .closest('tr')
      .hide();
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>

</head>
<body>

<h2>HTML Table</h2>

<table>
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr>
    <td>A</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>A</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>B</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>B</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>C</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>C</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
</table>

<button type="button">Hide A</button>

</body>
</html>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

仅基于提供的示例html。在你的点击处理程序中,使用正确的选择器来查找每个tr的第一个td然后循环遍历每个tr以执行决策逻辑将起作用:

$("tr td:first-child").each(function(index){
    if($(this).text() === "A") {
        $(this).closest("tr").hide();
    }
});