如何将jquery选择器应用于仅可见的复选框?

时间:2015-05-27 12:12:42

标签: jquery jquery-selectors visibility

我有以下代码检查html表格列中的所有复选框

$('.selectAll').on('click', function (e) {
    if ($(this).is(':checked')) {
        $('input[type=checkbox][value=' + $(this).attr("id") + ']').prop('checked', true);
    } else {
        $('input[type=checkbox][value=' + $(this).attr("id") + ']').prop('checked', false);
    }
});

除非在某些情况下表的某些行被隐藏,所以在这些用例中我不想要检查那些隐藏的复选框。

如何在上面的代码中包含可见性检查,以便只检查可见的复选框。所以基本上我想在这一行添加一个可见的添加:

 $('input[type=checkbox][value=' + $(this).attr("id") + ']').prop('checked', true);

3 个答案:

答案 0 :(得分:3)

使用:

 $('input[type=checkbox][value=' + $(this).attr("id") + ']:visible').prop('checked', true);

 $('input[type=checkbox][value=' + $(this).attr("id") + ']:visible').prop('checked', false);

答案 1 :(得分:2)

您可以将:visibleinput一样使用

$('input:visible[type=checkbox][value=' + $(this).attr("id") + ']')

你也可以使用.filter(),下面是一个例子

$('.selectAll').on('click', function (e) {
    var id = $(this).attr("id");
    $('input[type=checkbox]').filter(function(){
        return  $(this).is(':visible') && $(this).val() == id;
    }).prop('checked', this.checked);
});

答案 2 :(得分:0)

最好小心“:visible”,因为“visibility:hidden”或“opacity:0”的元素仍然被认为是可见的,因为它们仍占用页面布局中的空间。

如果您确定这不会成为您的问题,那么Milind的建议是正确的。

 $('input[type=checkbox][value=' + $(this).attr("id") + ']:visible').prop('checked', true);