jQuery toggleClass不能与label一起使用

4
为什么toggleClass()不能与
2个回答

9
您只需要将事件绑定从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),这将正确地切换类。


谢谢。看起来运行良好,我不知道标签上可以使用change()。 - Stickers
标签上的更改事件无效。它会触发复选框,因此只执行一次。 - DinoMyte
我有一个相关的问题,如果您能回答,那太好了。请参见http://jsfiddle.net/8gz0jsnq/7/,是否可能在第二次单击时从已选中更改为未选中时移除悬停状态? - Stickers
你可能需要更改一些逻辑来实现这个。这里有一个例子:http://jsfiddle.net/DinoMyte/8gz0jsnq/9/ - DinoMyte
当然,很高兴能帮忙 : )。祝你周五愉快!! - DinoMyte

5

你提到的是委托,而非绑定。(在答案中可能需要更正) - DinoMyte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接