这里我在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');
}
});
我怎么能这样做,请任何人帮助我
由于
答案 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)
答案 3 :(得分:0)
它应该添加另一个事件处理来触发“复选框”本身点击:
$(document).on('click','.checkbox input[type=checkbox]', function(e){
e.stopPropagation();
});