javascript - jQuery - 隐藏所有未选择值的行

标签 javascript jquery

我尝试根据与每行中所选值相对应的显示过滤器隐藏表格行。

显示过滤器

<select class="form-control" id="displayFilter">
  <option value="0" selected>all</option>
  <option value="1">Category A</option>
  <option value="2">Category B</option>
  <option value="3">Category C</option> 
</select>

我能够在更改时获取新值:

$('#displayFilter').change(function () {
  console.log("Filter changed to: " + this.value);        
});

示例行

<tr data-id="1">
  <td>Product A</td>
  <td>
    <select class="form-control">
      <option value="1" selected>Category A</option>
      <option value="2">Category B</option>
      <option value="3">Category C</option>
    </select>
  </td>
</tr>

<tr data-id="2">
  <td>Product B</td>
  <td>
    <select class="form-control">
      <option value="1">Category A</option>
      <option value="2" selected>Category B</option>
      <option value="3">Category C</option>
    </select>
  </td>
</tr>

最佳答案

我会使用这样的条件 JavaScript:

  1. 如果值为show all,则仅显示所有<tr> s并停止。
  2. 如果没有,请检查所有 .form-control table 里面。
    1. 如果值匹配,则显示相应的<tr> .
    2. 如果没有,请将其隐藏。

代码:

$(function () {
  $('#displayFilter').change(function () {
    that = this;
    if (this.value == 0)
      $("tr").show();
    else
    $("table .form-control").each(function () {
      if (this.value == that.value)
        $(this).closest("tr").show();
      else
        $(this).closest("tr").hide();
    });
  });
});

$(function () {
  $('#displayFilter').change(function () {
    that = this;
    if (this.value == 0)
      $("table tr").show();
    else
      $("table .form-control").each(function () {
        if (this.value == that.value)
          $(this).closest("tr").show();
        else
          $(this).closest("tr").hide();
      });
  });
});
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<select class="form-control" id="displayFilter">
  <option value="0" selected>all</option>
  <option value="1">Category A</option>
  <option value="2">Category B</option>
  <option value="3">Category C</option> 
</select>
<table>
  <tbody>
    <tr data-id="1">
      <td>Product A</td>
      <td>
        <select class="form-control">
          <option value="1" selected>Category A</option>
          <option value="2">Category B</option>
          <option value="3">Category C</option>
        </select>
      </td>
    </tr>
    <tr data-id="2">
      <td>Product B</td>
      <td>
        <select class="form-control">
          <option value="1">Category A</option>
          <option value="2" selected>Category B</option>
          <option value="3">Category C</option>
        </select>
      </td>
    </tr>
  </tbody>
</table>

关于javascript - jQuery - 隐藏所有未选择值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767226/

相关文章:

javascript - 如何获取输入文本的内容?

javascript - 如何在javascript中触发数据点击事件

jquery - 使用 knockout.js 和 jqueryUI 的可排序表

jquery - 使用 CSS 将标题设置为元素

javascript - bool 变量表现得很奇怪

javascript - 使用 Bootstrap 水平切换按钮

javascript - 如何判断 HTTP 表单是否已提交?

javascript - 按下浏览器的后退/前进按钮时显示自定义弹出窗口

javascript - 将切换的 div 保持在原位

javascript - 在使用基本的 greasemonkey 脚本时遇到问题 - GM.getValue/GM.setValue(我认为)