jQuery -单击,选中类中的所有复选框,如果选中(这样做),如果没有(然后)


jQuery - On click, check all checkboxes in class, if checked (do this) if not (then)

我有一个由MySQL查询填充的PHP页面。现在,我想根据选中的复选框筛选表结果。

加载页面后显示所有结果。然后在更改复选框时,结果将过滤,隐藏或显示基于复选框被选中的行!

有人可以帮助我与jQuery代码。我有;

$(function() {
$(".filterCheck").change(function() {
    var checkArr = $('.filterCheck:checked').map(function() {
        $ = '.filter_' + this.value;
        $($).parents('tr').show();
        return this.value;            
    }).get();
    $.each(checkArr, function(i, val) {
        alert('No values');
        $v = ".filter_" + val;
        $($v).parents('tr').show()
    });
}); 

有人可以解释我如何编辑这段代码,所以如果复选框被选中,结果在表中显示($(this.value).parents('tr').show())或者,如果复选框未被选中,那么。hide(),但是如果所有复选框都未选中,那么所有结果都显示…

复选框由PHP代码创建,

        $db_results = mysqli_query(Database::$conn, "SELECT * FROM suppliers WHERE ten_ID = $tenid ORDER BY sup_Name;");
    /* make an array from all the suplier types 
     * build cheklist of the types */
    echo "<br><h5 class='text-muted'>Filter by supplier type</h5>";
    $db_types = [];
    while ($row = mysqli_fetch_array($db_results)) { array_push($db_types, $row['sup_Type']); }
    sort($db_types);
    $db_types = array_unique($db_types);
    foreach ($db_types as $i) {
        echo "<div class='checkbox'>";
        $t = strtolower(str_replace(' ', '_', $i));
        echo "<label><input type='checkbox' class='filterCheck' value='$t'>$i</label>";
        echo "</div>"; 
    }

这将从表中获取供应商类型,并根据返回值创建一个复选框。然后将复选框的值设置为返回值,用小写字母表示,并用'_'替换空白。然后用下面的

填充表行和表数据字段
            $t = strtolower(str_replace(' ', '_', $row['sup_Type']));
        echo "<td class='filter_$t'>" . $row['sup_Type'] . "</td>";

设置带有'filter_'前缀的TD的类然后,当你选中一个复选框时,它可以接受这个值,用'filter_'作为前缀,并显示或隐藏该类型的所有行。

像这样

$(function() {
    $(".filterCheck").on('change', function() {
        var checked = $('.filterCheck:checked'),
            trs     = $('[class^="filter_"]').closest('tr');
        if (checked.length === 0) { // no boxes checked
            trs.show();
        } else {
            trs.hide();
            checked.each(function() {
                $('.filter_' + this.value).closest('tr').show();
            });
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h5 class='text-muted'>Filter by supplier type</h5>
<div class='checkbox'>
    <label><input type='checkbox' class='filterCheck' value='test1'>Test 1</label>
    <label><input type='checkbox' class='filterCheck' value='test2'>Test 2</label>
    <label><input type='checkbox' class='filterCheck' value='test3'>Test 3</label>
</div>
<br /><br />
<table>
    <tr><td class='filter_test1'>test1</td></tr>
    <tr><td class='filter_test2'>test2</td></tr>
    <tr><td class='filter_test3'>test3</td></tr>
</table>

相关文章: