单击标题以切换一组多个复选框

时间:2012-02-01 02:42:31

标签: jquery checkbox

我有一组复选框,每组旁边都有一个旋转的h4。

我正在努力使它当我点击h4 alla相关复选框时 - 所有选中 - 除非他们所有人都被检查过,如果是这样则取消选中。

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>

3 个答案:

答案 0 :(得分: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');
});

这将是什么,查找组内任何未经检查的输入,如果尚未检查任何复选框,则检查所有,否则,我们取消选中所有,因为我们知道它们都已经过检查。

答案 1 :(得分:0)

实际上这是有效的

http://jsfiddle.net/tuhLG/2/

答案 2 :(得分: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/