2012-02-01 63 views
0

我有一组复选框和每个组旁边的旋转h4。点击标题切换一组多选复选框

我试图做到这一点,当我点击h4 alla相关的复选框是 -all checked - 除非他们全部检查,如果这样全部取消选中。

enter image description here

的jQuery到目前为止,我来最接近:

jQuery(".sidewaysHeader h4").click(function() { 
     var now = $(this).attr('id'); 
     $('input:checkbox[name="'+ now +'"]').attr('checked', true); 
    }); 

的HTML:

 <div class="sidewaysHeader"><h4 id="halsa">Hälsa</h4></div> 
     <input type="checkbox" value="idrott" id="idrott" name="halsa" /><label for="idrott">Idrott</label><br /> 
     <input type="checkbox" value="dans" id="dans" name="halsa" /><label for="dans">Dans</label><br /> 
     <input type="checkbox" value="hemkunskap" id="hemkunskap" name="halsa" /><label for="hemkunskap">Hemkunskap</label><br /> 
     <input type="checkbox" value="mat-och-boende" id="mat-och-boende" name="halsa" /><label for="mat-och-boende">Mat & Boende</label> 
+0

我使用:<脚本类型= “文/ JavaScript的” SRC =“http://ajax.googleapis.com/ajax /libs/jquery/1.3.2/jquery.min.js“> – Alisso 2012-02-01 02:43:15

回答

1
$('.sidewaysHeader h4').click(function() { 
    var now = $(this).attr('id'); 
    if($('input:checkbox[name="'+ now +'"]:not(:checked)').length >= 1) 
    $('input:checkbox[name="'+ now +'"]').attr('checked', 'checked'); 
    else 
     $('input:checkbox[name="'+ now +'"]').removeAttr('checked'); 
}); 

这将做什么,查找组中的任何未经检查的输入,如果任何复选框尚未检查,然后检查所有,否则,我们取消全部选中,因为我们知道他们都被检查。

+0

可爱!奇迹般有效! – Alisso 2012-02-01 08:26:36

0

我明白你想检查并取消选中所有点击标题的复选框。如果它们中的任何一个已经被检查过,那么检查它们全部。你可以做这样的

jQuery(".sidewaysHeader h4").click(function() { 
    var elems = $('input:checkbox[name="'+ $(this).attr('id') +'"]'); 
    elems.attr('checked', elems.filter(':checked').length != elems.length); 
}); 

小提琴例如:http://jsfiddle.net/tuhLG/6/