jquerycheckall复选框
我无法使用此复选框检查未隐藏的复选框 基本上,我需要它不要选中表中任何隐藏在视图中的复选框 快速修复是用这个代码替换上面的代码jquerycheckall复选框,jquery,checkbox,Jquery,Checkbox,我无法使用此复选框检查未隐藏的复选框 基本上,我需要它不要选中表中任何隐藏在视图中的复选框 快速修复是用这个代码替换上面的代码 $("input:checkbox.checkall").live('click', function(event){ var checkedStatus = this.checked; $("td.small input[type=checkbox]:visible").each(function() { this.c
$("input:checkbox.checkall").live('click', function(event){
var checkedStatus = this.checked;
$("td.small input[type=checkbox]:visible").each(function() {
this.checked = checkedStatus;
});
});
理想情况下,您应该使用change事件,因为输入可以通过单击进行更改。您还可以找到所有隐藏了
ui tableFilter
的行,然后选中相应的复选框。我还使用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);
});
在上面的代码中,IF检查和EACH循环是不相关的。IF将在某个点求值为true,然后每个循环将遍历与选择器匹配的所有复选框,而不管您在IF中选中了什么 试试这样吧
$('table tbody tr')each(function(){
if(!$(this).hasClass('ui-tableFilter-hidden')){
$(this).find("td.small input:checkbox").each(function() {
this.checked = checkedStatus;
});
}
}
你能把一个JSFIDLE放在一起吗?你还应该在你的答案中使用change事件。我最后用$('input[type=checkbox]:visible')编辑了我的代码,以反映你想要的行没有这个类的事实。不过,你的方法更简单!只需确保使用更改事件。无需在行之间循环——正如OP自己发现的那样,您可以使用:visible伪选择器,或者正如我发布的那样,您可以搜索所有行,而不必隐藏类
ui tableFilter
。
$("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);
});
$('table tbody tr')each(function(){
if(!$(this).hasClass('ui-tableFilter-hidden')){
$(this).find("td.small input:checkbox").each(function() {
this.checked = checkedStatus;
});
}
}