如何在jquery中正确使用.find获取值

时间:2016-11-23 08:00:20

标签: jquery

你好有人知道可以这样做吗?

$(document).ready(function(){
        $('body').delegate('#check-hide-empty-table', 'click', function(){
            if ($(this).is(':checked')) {
                alert("checked")
                $('table').find('tr td.test').parents('tr').hide();
            }
            else {
                alert("uncheck")
                $('table').find('tr td.test').parents('tr').show();
            }
        });

和像这样的php文件

</script>
<table id="myTable" class="table table-responsive table-hover table-striped table-fixed tablesorter">
    <thead>
        <th><input type="checkbox" value="hide" id="check-hide-empty-table"> Hide Empty</th>
    </thead>

    <tbody>
    <?php
        $first = false;
        foreach ($data["data"] as $list) {
            $isfull = $list["Players"] == $list["MaxUsers"] ? true : false;
    ?>

        <tr class="tabClicker" data-tab="tabs-1" id="<?=$list["Id"];?>">
            <td class= "test"><?= $list["Players"]."/".$list["MaxUsers"];?></td>
        </tr>
        <?php } ?>
    </tbody>
</table>

我想要做的是,我想在 $ list [“player”] = 0 时创建隐藏的chechbox功能但是我很混淆如何这样我试图使用取值 .find(tr td.test)如果 .find(tr td.test)= 0 ,该表将被隐藏

怎么做?此代码现在仍然出错。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

首先请注意,delegate()方法已弃用。您应该使用on()代替。如果您使用的是1.7以上的任何版本的jQuery,则需要升级它,理想情况下至少要升级到1.12。

在处理单选按钮和复选框时,您还应该使用change事件,以便更好地访问。

要解决您的实际问题,您可以使用filter(),如下所示:

$('#myTable').on('change', '#check-hide-empty-table', function() {
    $('table').find('tr td.test').filter(function() {
        return $(this).text().trim() == "0";
    }).parents('tr').toggle(!this.checked);
});

在这个例子中,我通过提供if属性到checked方法的布尔值来否定对toggle()语句的需要。

Working example