单击父div时,JQuery切换复选框

时间:2013-09-09 11:13:23

标签: jquery

这里我在div.checkbox中有一些带标签的复选框

我想在点击父div.checkbox

时切换复选框

HTML

<div class="checkbox">
  <input id="checkbox-1" type="checkbox" name="Data1" value="option1" />
  <label for="checkbox-1">HTML</label>
  <br />
  <input id="checkbox-2" type="checkbox" name="Data2" value="option2" />
  <label for="checkbox-2">CSS</label>
   <br /> 
    <input id="checkbox-3" type="checkbox" name="Data3" value="option3" />
  <label for="checkbox-3">HTML</label>
  <br />
  <input id="checkbox-4" type="checkbox" name="Data4" value="option4" />
  <label for="checkbox-4">CSS</label>
</div>

JQUERY

$('.checkbox').click(function(){
    var el = $('.checkbox input[type=checkbox]')
    if(el.is(':checked')){
          find(el).removeAttr('checked');
    }
    else {
        el.attr('checked','checked');
    }
});

working demo

我怎么能这样做,请任何人帮助我

由于

4 个答案:

答案 0 :(得分:5)

您需要使用.prop()代替.attr()来设置已检查的属性值

$('.checkbox').click(function(){
    $(this).find('input[type=checkbox]').prop('checked', function(){
        return !this.checked;
    });
});

演示:Fiddle

答案 1 :(得分:1)

您可以使用.find将范围限制为点击的元素:

$('.checkbox').click(function(){
    $(this).find(":checkbox").prop('checked', function(){
        return !this.checked;
    });
});

这是一个有效的fiddle

答案 2 :(得分:0)

更改

  var el = $('.checkbox input[type=checkbox]')

  var el = $(this)

DEMO

答案 3 :(得分:0)

它应该添加另一个事件处理来触发“复选框”本身点击:

$(document).on('click','.checkbox input[type=checkbox]', function(e){
    e.stopPropagation();
});