jQuery Checkall 复选框

发布于 2024-12-11 15:45:29 字数 720 浏览 0 评论 0原文

我无法让此复选框检查未隐藏的复选框

基本上我需要它不检查表中隐藏的任何复选框

ui-tableFilter-hidden
$("input:checkbox.checkall").live('click', function(event){
    var checkedStatus = this.checked;
    if(!$('table tbody tr').hasClass('ui-tableFilter-hidden'))
    {
        $("td.small input:checkbox").each(function() {
            this.checked = checkedStatus;
        });
    }
});

快速修复是将上面的代码替换为这个代码

$("input:checkbox.checkall").live('click', function(event){
    var checkedStatus = this.checked;

        $("td.small input[type=checkbox]:visible").each(function() {
            this.checked = checkedStatus;
        });

});

I cant get this checkbox to check the checkboxs which are not hidden

Basiclly I need it to not check any check box in the table which is hidden from view

ui-tableFilter-hidden
$("input:checkbox.checkall").live('click', function(event){
    var checkedStatus = this.checked;
    if(!$('table tbody tr').hasClass('ui-tableFilter-hidden'))
    {
        $("td.small input:checkbox").each(function() {
            this.checked = checkedStatus;
        });
    }
});

Quick fix was to replace the above code with this one

$("input:checkbox.checkall").live('click', function(event){
    var checkedStatus = this.checked;

        $("td.small input[type=checkbox]:visible").each(function() {
            this.checked = checkedStatus;
        });

});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

喜你已久 2024-12-18 15:45:29

您的 IF 检查和 EACH 循环在上面的代码中是无关的。 IF 将在某个时刻评估为 true,然后 EACH 循环将迭代与选择器匹配的所有复选框,无论您在 IF 中检查了什么。

尝试这样的事情来代替......

$('table tbody tr')each(function(){
    if(!$(this).hasClass('ui-tableFilter-hidden')){
           $(this).find("td.small input:checkbox").each(function() {
                this.checked = checkedStatus;
            });
        }
    }

Your IF check and the EACH loop are unrelated in the code above. The IF will evaluate to true at some point and then the EACH loop will iterate through all checkboxes matching the selector, regardless of what you checked in the IF.

Try something like this instead...

$('table tbody tr')each(function(){
    if(!$(this).hasClass('ui-tableFilter-hidden')){
           $(this).find("td.small input:checkbox").each(function() {
                this.checked = checkedStatus;
            });
        }
    }
他是夢罘是命 2024-12-18 15:45:29

理想情况下,您应该使用更改事件,因为不仅仅可以通过单击来更改输入。您还可以查找带有 ui-tableFilter-hidden 的所有行,然后选中相应的复选框。我还使用 prop 来标识该框的选中状态,从 jQuery 1.6 开始可用,尽管 this.checked 也应该可以工作。

$("input:checkbox.checkall").change(function(){
    var jCheckAll = $(this);
    var checkedStatus = jCheckAll.prop("checked");
    var jRows = $('table tbody tr:not(.ui-tableFilter-hidden)');
    jRows.find("td.small input:checkbox").prop("checked",checkedStatus);
});

Ideally, you should be using the change event, since inputs can be altered with more than just clicks. You can also just find all rows with the ui-tableFilter-hidden, then check the appropriate checkboxes. I also use prop to identify the checked state of the box, available as of jQuery 1.6, although this.checked should work as well.

$("input:checkbox.checkall").change(function(){
    var jCheckAll = $(this);
    var checkedStatus = jCheckAll.prop("checked");
    var jRows = $('table tbody tr:not(.ui-tableFilter-hidden)');
    jRows.find("td.small input:checkbox").prop("checked",checkedStatus);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文