【问题标题】:Multiple checkboxes hiding rows if TD doesn't contain value如果 TD 不包含值,则隐藏行的多个复选框
【发布时间】:2016-03-29 01:09:56
【问题描述】:

我有一个包含 td 和文本的表格。我希望能够根据复选框值过滤每一行。例如,如果我只选择一个复选框,它将查找并过滤掉不包含复选框值的行。如果我选择两个复选框,它将过滤并仅显示包含复选框的两个值的行。我可以让它部分工作,但如果存在复选框值,它将显示该行,无论是否选择了第二个复选框。选中其他复选框时,如何使其进一步过滤?

这是我目前的代码。

jQuery('document').ready(function(){
var $ = jQuery
$(":checkbox").click(function() {
var showAll = true;
$('tr').not('.first').hide();
var checkedValues = $(":checkbox:checked").map(function() {
    return this.value;
}).get();

$("tbody tr").hide();
for (var i = 0; i < checkedValues.length; i++) {
    showAll = false;
    $("td:contains('" + checkedValues[i] + "')").parent("tr").show();
}

if(showAll){
    $('tr').show();
}
});
});

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    假设您只需要包含选中复选框的所有值的行。

    试试这个:

    $(":checkbox").click(function() {
      var checkedValues = $(":checkbox:checked").map(function() {
        return this.value;
      }).get();
    
      $("tbody tr")
      .hide()
      .filter(function() {
      	var
        $tr = $(this),
        $tds = $.map(checkedValues, function(v) {
        	return $tr.find('td:contains(' + v + ')').length > 0 ? v : null;
        });
        return $tds.length == checkedValues.length;
      }).show();
    
      if (checkedValues.length == 0) {
        $('tr').show();
      }
    });
    #searchTable {
      border-collapse: collapse;
    }
    
    #searchTable td {
      border: 1px solid #333;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="checkbox" id="buh" value="buh">
    <label for="buh">buh</label>
    <input type="checkbox" id="dum" value="dum">
    <label for="dum">dum</label>
    <input type="checkbox" id="tss" value="tss">
    <label for="tss">tss</label>
    
    <table id="searchTable">
      <thead>
        <tr class="first">
          <td>probably</td>
          <td>are</td>
          <td>headers</td>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>buh</td>
          <td></td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td>dum</td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td>tss</td>
        </tr>
        <tr>
          <td>buh</td>
          <td>dum</td>
          <td></td>
        </tr>
        <tr>
          <td></td>
          <td>dum</td>
          <td>tss</td>
        </tr>
        <tr>
          <td>buh</td>
          <td></td>
          <td>tss</td>
        </tr>
      </tbody>
    </table>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2012-02-17
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 2020-03-20
      • 2023-04-01
      相关资源
      最近更新 更多