问题描述:
通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项。代码如下:
<label>
<input type="radio" name="sex" />男
</label>
<label>
<input type="radio" name="sex" />女
</label>
但是,此时,如果label标签有点击事件,则会触发两次。
问题原因:
点击label的时候,事件冒泡一次,同时会触发关联的input的click事件,导致事件再次冒泡
解决办法:
1.判断事件来源,如果是input,则阻止。代码如下:
$("label").click(function (e) {
if ($(e.target).is("input"))
return;
//code
});
2.从写法上解决,使用label标签的for属性,代码如下:
<input type="radio" name="sex" id="man" /><label for="man">男</label>
<input type="radio" name="sex" id="women" /><label for="women">女</label>
本文探讨了在HTML中使用label标签时,点击事件冒泡引发的问题及解决方案。当label内的input元素被点击时,会触发两次事件冒泡,影响用户体验。文章提供了两种解决策略:一是通过JavaScript判断事件来源并阻止不必要的触发;二是利用label的for属性正确关联input元素,避免额外的事件触发。

被折叠的 条评论
为什么被折叠?



