父母和子女复选框
Parent element
Child element
Child element
Parent element2
Child element2
Child element2
Parent element3
Parent element4
页面上有一些复选框。 我需要:
- 检查所有孩子是否选中父母。
- 如果未选中所有子项,请取消选中父项。
- 如果至少检查了一个孩子,请检查父母。
这是一些代码,但它不起作用
$('input[type=checkbox]').change(function() { var id = $(this).attr('id'); var children = $('.parent-' + id); //Is this a child if (children.length) { //Is it checked if ($(this).is(':checked')) { //Find the parent var className = $(this).attr('class'); var pId = className.replace("parent-",""); //If the parent is not checked, then check this parent if (!$(pId).is(':checked')) $(pId).attr('checked','checked'); } //Is it NOT checked else{ //Do other childs are not checked too? //var className2 = $(this).attr('class'); //$(className2) } } //If this is a parent, then check all childs esle{ children.attr('checked', $(this).attr('checked')); } });
在这里,我为您编写代码: http : //jsfiddle.net/PUWZX/4/
我没有检查你的所有脚本,但是先告诉我你是否放入了这段代码
$(document).ready(function() { .... });
如果jquery在你的页面上工作?
试试这个, http://jsfiddle.net/erick/dd6Qr/
// 1. Check all childs if parent is checked $("#s9").change(function(){ if($(this).is(':checked')) { var cls = '.parent-' + $(this).attr('id'); $(cls).attr('checked', true); } }); $('input[class*="parent"]').change(function(){ var cls = '.' + $(this).attr('class') + ':checked'; var len = $(cls).length; var parent_id = '#' + $(this).attr('class').split('-')[1]; // 3. Check parent if at least one child is checked if(len) { $(parent_id).attr('checked', true); } else { // 2. Uncheck parent if all childs are unchecked. $(parent_id).attr('checked', false); } });