Если я правильно понимаю ваш вопрос:
$('#select_all').change(function() {
// Is "select all" checked?
if(this.checked) {
// Yes, check all *visible* checkboxes
$("input[name^='select']:visible").attr('checked', 'checked');
} else {
// No, uncheck all checkboxes (visible or not)
$("input[name^='select']").removeAttr('checked');
}
});
... но я бы тоже был немного осторожнее и поставил бы [type=checkbox]
в селекторе:
$('#select_all').change(function() {
// Is "select all" checked?
if(this.checked) {
// Yes, check all *visible* checkboxes
$("input[name^='select'][type=checkbox]:visible").attr('checked', 'checked');
} else {
// No, uncheck all checkboxes (visible or not)
$("input[name^='select'][type=checkbox]").removeAttr('checked');
}
});
Отдельно, для меня это всегда красный флаг, если действие чего-либо неуравновешено & mdash; в этом случае проверка «выбрать все» проверит все видимые, но при снятии отметки будет снята все из них. Я бы, наверное, либо сделал это:
$('#select_all').change(function() {
var checkboxes = $("input[name^='select'][type=checkbox]:visible");
// Is "select all" checked?
if(this.checked) {
// Yes, check all *visible* checkboxes
checkboxes.attr('checked', 'checked');
} else {
// No, uncheck all *visible* checkboxes
checkboxes.removeAttr('checked');
}
});
... или это:
$('#select_all').change(function() {
// Is "select all" checked?
if(this.checked) {
// Yes, check all *visible* checkboxes...
$("input[name^='select']:visible").attr('checked', 'checked');
// ...and make sure all the invisible ones are unchecked
$("input[name^='select'][type=checkbox]:not(:visible)").removeAttr('checked');
} else {
// No, uncheck all checkboxes (visible or not)
$("input[name^='select'][type=checkbox]").removeAttr('checked');
}
});
... но вы знаете свои требования лучше, чем я.