CheckAll CheckBox Jquery
我使用此代码检查树视图中的复选框。
HTML:
- Root
- Child 1
- Subchild 1
- Subchild 2
- Subchild 3
- Child 2
- Subchild 1
- Subchild 2
JavaScript的:
$(document).ready(function() { $("#tree input:checkbox").change(function() { var val = $(this).attr("checked"); $(this).parent().find("input:checkbox").each(function() { if (val) { $(this).attr("checked", "checked"); } else { $(this).removeAttr("checked"); } }); }); });
JSFiddle: http : //jsfiddle.net/jRAcq/
这很好用。 但是,如果未选中任何一个子节点,则取消选中根/子根。 我怎么能这样做?
试试这个…
$(document).ready(function() { $("#tree input:checkbox").change(function() { var val = $(this).attr("checked"); $(this).parent().find("input:checkbox").each(function() { if (val) { $(this).attr("checked", "checked"); } else { $(this).removeAttr("checked"); $(this).parents('ul').each(function(){ $(this).prev('input:checkbox').removeAttr("checked"); }); } }); });
});
$(document).ready(function () { $.extend($.expr[':'], { unchecked: function (obj) { return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); } }); $("#tree input:checkbox").live('change', function () { $(this).next('ul').find('input:checkbox').prop('checked', $(this).prop("checked")); for (var i = $('#tree').find('ul').length - 1; i >= 0; i--) { $('#tree').find('ul:eq(' + i + ')').prev('input:checkbox').prop('checked', function () { return $(this).next('ul').find('input:unchecked').length === 0 ? true : false; }); } }); });
现场演示请看这个链接: http : //jsfiddle.net/nanoquantumtech/JfMCP/
//要么
$(document).ready(function () { $.extend($.expr[':'], { unchecked: function (obj) { return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); } }); jQuery.fn.reverse = [].reverse; $("#tree input:checkbox").live('change', function () { $(this).next('ul').find('input:checkbox').prop('checked', $(this).prop("checked")); $('#tree').find("input:checkbox + ul").reverse().each(function () { $(this).prev('input:checkbox').prop('checked', $(this).find('input:unchecked').length === 0 ? true : false); }); }); });
// ================================================ ================================== //
你的html jquery代码如下:
$(document).ready(function () { $.extend($.expr[':'], { unchecked: function (obj) { return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked')); } }); jQuery.fn.reverse = [].reverse; $('#PagesTree').find('input:checkbox').live('change', function () { $('#' + $(this).attr('name').replace(/CheckBox/g, '') + 'Nodes').find('input:checkbox').prop('checked', $(this).prop("checked")); $('#PagesTree').find('input:checkbox').reverse().each(function () { var obj = $('#' + $(this).attr('name').replace(/CheckBox/g, '') + 'Nodes'); if (obj.find('input:checkbox').length > 0) $(this).prop('checked', obj.find('input:unchecked').length === 0 ? true : false); }); }); });
现场演示请看这个链接: http : //jsfiddle.net/nanoquantumtech/GmT7U/