码迷,mamicode.com
首页 > 其他好文 > 详细

解决label点击事件触发两次问题

时间:2015-04-19 06:20:37      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项。代码如下:

<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>

3.其他解决办法,传送门

 

解决label点击事件触发两次问题

标签:

原文地址:http://www.cnblogs.com/talentzemin/p/4438513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!