我正在尝试单击此处添加/删除类,但是toggleClass却无法正常运行。相反,addClass可以正常工作,但是我需要它才能在第二次单击时删除该类。
$('.label1').on('click', function() {
var $checkItem = $(this).find('input[type=checkbox]');
$(this).toggleClass('checked');
$checkItem.prop("checked", !$checkItem.prop("checked"));
})
$('.label2').on('click', function() {
var $checkItem = $(this).find('input[type=checkbox]');
$(this).addClass('checked');
$checkItem.prop("checked", !$checkItem.prop("checked"));
})
你能告诉我我在做什么错吗?
在此处查看实际操作:Test jquery。
谢谢!
最佳答案
您可以通过挂接到复选框的change
事件来避免该问题并简化逻辑。然后,您可以根据checked
属性的状态在父label
上设置checked
类。
在复选框上使用change
而不是click
来满足可访问性标准也要好得多,因为它允许使用键盘进行导航的用户在UI中触发相同的效果。尝试这个:
$(':checkbox').on('change', function() {
$(this).closest('label').toggleClass('checked', this.checked)
});
.checked {
border: 2px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<div class="checkbox">
<label class="label1">
<input type="checkbox">
Check me out
</label>
</div>
<div class="checkbox">
<label class="label2">
<input type="checkbox">
Check me out
</label>
</div>
</form>