zoukankan      html  css  js  c++  java
  • 解决label点击事件触发两次问题

    问题描述:

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

    <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.其他解决办法,传送门

  • 相关阅读:
    (8)FastDFS
    (7)文件上传
    (6)品牌新增
    数据仓库_MySQL(2)
    数据仓库_Linux(5)&MySQL(1)
    J哥说生产事故之僵尸进程
    J哥说生产事故之CPU爆表
    idea classpath
    (五)返回两个数组之间的差异
    (四)数组扁平化
  • 原文地址:https://www.cnblogs.com/talentzemin/p/4438513.html
Copyright © 2011-2022 走看看