这是我的复选框列表http://jsfiddle.net/YnM2f/
的示例我们说我检查G
然后A,B,C,D,E,F
也自动检查。如何用jQuery实现我的目标?
答案 0 :(得分:4)
首先,您需要根据单击哪个复选框获取所有复选框。为此,您需要获取父节点,它之前的兄弟节点。以下是一些可以帮助您实现目标的代码,但您需要对其进行处理以使其适合您。
$("input:checkbox").on("click",function(){
if(this.checked)
$(this).parent().prevAll().each(function(){
$("input:checkbox",this).attr("checked",true);
});
});
答案 1 :(得分:3)
$('input:checkbox').change(function(){
var $allParents = $(this).parent();
$allParents.prevAll().find('input').attr('checked', 'checked');
$allParents.nextAll().find('input').removeAttr('checked');
});
试试这个
答案 2 :(得分:3)
这将检查选中复选框上方的所有复选框,并取消选中未选中复选框上方的所有复选框,给定您提供的复选框布局。
$('input:checkbox').click(function () {
var state = $(this).prop('checked');
var elements;
if (state) {
elements = $(this).parent().prevAll();
} else {
elements = $(this).parent().nextAll();
}
elements.each(function () {
$('input:checkbox', this).prop('checked',state);
});
});
答案 3 :(得分:2)
嗯它已经完成了五次,但这就是我所做的:http://jsfiddle.net/YnM2f/27/
$('input').click(function(){
if( $(this).is(':checked') ){
$(this).parent('p').prevAll().children('input').attr('checked',true)
}
})
答案 4 :(得分:1)
尝试这样的事情:http://jsfiddle.net/YnM2f/16/
这是一个非常具体的解决方案(因为它只适用于“G”),但它应该让您了解如何自定义此代码以满足您的需求。
$('input:checkbox').filter(function(){
return (/ G/).test($(this).parent().text())
}).on('change', function() {
var gBox = $(this);
$('input:checkbox').prop('checked', $(gBox).prop('checked'));
});