我无法通过此复选框检查未隐藏的复选框
Basiclly我需要它不检查表中隐藏的任何复选框
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;
});
});
答案 0 :(得分:1)
您的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;
});
}
}
答案 1 :(得分:0)
理想情况下,您应该使用更改事件,因为输入可以更改而不仅仅是点击。您也可以找到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);
});