为什么
toggleClass()
不能与click
更改为change
即可。$('.filter-set label').change(function() {
$(this).toggleClass("active");
});
工作示例:http://jsfiddle.net/DinoMyte/8gz0jsnq/5/
解释:
事实证明,当您单击标签时,它也会在input:checkbox
上调用click
事件(因为嵌套元素包装)。因此,标签上的第一个事件正确设置了类'active'
,但由于checkbox
上的随后的点击事件将其切换回empty
(基本上删除了类'active
')。
上述内容的影响可以在这里看到:http://jsfiddle.net/DinoMyte/8gz0jsnq/6/
绑定change
事件只会触发一次事件(仅适用于checkbox
),这将正确地切换类。
$("input[type=checkbox]").on('change', function () {
$(this).parent().toggleClass("active");
});
当直接点击复选框和标签时可正常工作:
https://jsfiddle.net/s6fx1Lez/
关于为什么会发生这种情况的更多细节: