通常做网页时不会用radio和checkbox的原有样式,通常会进行样式美化,手机端我用的jqurey weui框架,他的原理是这样的:

<label class="check_label" for="sort_4">
<input type="radio" class="weui_check" name="sort" id="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label>
<style>
.check_label{position:relative;}
.weui_check{position:absolute;left:-9999em;}
</style>

将input移出屏幕,样式加在i标签上,在电脑端我自己写代码的时候出现个问题:

.weui_check{position:absolute;left:9999em;}

时,当input被选中时,屏幕居然诡异的聚焦至这个input,跳出了原页面;当我改成:

.weui_check{position:absolute;left:-9999em;}

就没有问题了,没去深研究,暂时不管;如果有同行碰到这情况,且知道原因,感谢留言告知。

主要谈谈label的点击事件中遇到的坑,(jq写的):

<label class="check_label" for="sort_4">
<input type="radio" class="weui_check" name="sort" id="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label> $("label").on("click",function(){
$(this).next().slideToggle();
console.log(1);
})

原本想给其后边的元素添加个toggle事件,就是如果显示就收起,收起就显示;这下好,点了后,就展开后马上收起。。。

什么鬼,不知道代码出啥问题了,console.log()后发现,被执行了两次!!

自行猜测:(如果有错,欢迎高手指正)

点击label后,点击事件会trigger(触发了)label的for的那个input,以上代码,是正好是其内部的input的click事件(来触发被选中或未被选中事件),然后input的点击事件,冒泡至父级label上,所以导致了两次点击的情况。

我的解决思路:

1.改变结构,将input从label便签中取出放在别的地方:

<label class="check_label" for="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label>
<input type="radio" class="weui_check" name="sort" id="sort_4"> $("label").on("click",function(){console.log(1); })

亲测可行,只执行了一次,上述的原因判断应该是正确的!

1.在不改变原有结构的情况下,因为我label里边的i标签实际是充满label的,所以将点击事件加在i上(坑来了):

<label class="check_label" for="sort_4">
<input type="radio" class="weui_check" name="sort" id="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label> $("i").on("click",function(){
$(this).next().slideToggle();
console.log(1);
})

我去!坑来了,完全没有用,console中什么都没输出,出了什么事???

再改:

<label class="check_label" for="sort_4">
<input type="radio" class="weui_check" name="sort" id="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label> $("label").children().on("click",function(){
$(this).next().slideToggle();
console.log(1);
})

我去!执行了,而且是执行了一次!

什么鬼?噢噢噢...应该是label触发了input的click事件,所以执行了!

再改:

<label class="check_label" for="sort_4">
<input type="radio" class="weui_check" name="sort" id="sort_4">
<i class="weui_icon_checked">Price Low to High </i>
</label> $("label input").on("click",function(){
$(this).next().slideToggle();
console.log(1);
})

成功执行!上述判断是正确的!

我那个去,那问题来了,放在label便签中的所有的元素,你其实是点不到的!你其实是点不到的!你其实是点不到的!

亲测:确实是这样!!

有时间去探索具体原因了!知其然,标记下!

如有错误!欢迎指正!

关于label的点击事件(原创)的更多相关文章

  1. 给label添加点击事件

    后台代码: lb1.Attributes.Add("onclick", "getSN('" + lb1.Text.Trim() + "')" ...

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

    问题描述: 通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项.代码如下: <label> <input type="radio" name=& ...

  3. Qt:添加点击事件的Label并显示图片

    1.给label添加点击事件 Qt中原本的label是没有点击事件的,如果想添加点击事件的话,可以继承QLabel类并重载鼠标事件(比如mousePressedEvent),然后在鼠标事件中发送一个信 ...

  4. 【MAUI】为 Label、Image 等控件添加点击事件

    一.前言 已经习惯了 WPF.WinForm 中"万物皆可点击"的方式. 但是在 MAUI 中却不行了. 在 MAUI 中,点击.双击的效果,是需要通过"手势识别器&qu ...

  5. iOS开发小技巧 - label中的文字添加点击事件

    Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...

  6. label标签内含有input元素,点击事件会触发两次

    **label标签内含有input元素,点击事件会触发两次** 如果你的结构是label内写input实现点击文字时候input也有相应.并且,把事件设置在了label上,那么就会执行两次了. //h ...

  7. 解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题

    问题描述:     在IE8及以下版本时,点击label标签无法自动触发checkbox的click事件,导致无法产生希望的效果. 原HTML代码: <div class="col-s ...

  8. label 阻止冒泡 防止点击label 触发2次事件

    // 必须要把 jnput的外面的label加上事件阻止冒泡,否则点击label的时候,会冒泡到input上 再次触发input的点击事件 $('.xt_order_cleft_modb_rl_dx' ...

  9. [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

随机推荐

  1. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  2. java代码解压zip文件

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  3. echarts学习总结

    ECharts学习总结使用步骤1 引入ECharts <script src="echarts.min.js"></script>2 绘制一个简单的图表 为 ...

  4. 深入理解DOM节点类型第五篇——元素节点Element

    × 目录 [1]特征 [2]子节点 [3]特性操作[4]attributes 前面的话 元素节点Element非常常用,是DOM文档树的主要节点:元素节点是html标签元素的DOM化结果.元素节点主要 ...

  5. 使用 ExecuteMultiple 提高批量数据加载的性能

    您可以使用 ExecuteMultipleRequest 消息在 Microsoft Dynamics CRM Online 2016 Update 和 Microsoft Dynamics CRM ...

  6. iOS 10 开发适配系列 之 权限Crash问题

    升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列. 直入正题吧 今天用一个项目小小练下手,发现调用相机,崩了.试试看调用相册,又特么崩了.然后看到控制台输出了以下信息 ...

  7. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍

    java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...

  8. 5、项目间的沟通协调 - PMO项目管理办公室

    沟通是人类所具备的优良而有一定技巧的一种方式.但是,沟通也是PMO项目管理办公室中所有项目组必须建立起来的能力,也是PMO项目管理办公室日常所需要进行的一项工作内容. 一.项目间的沟通: PMO项目管 ...

  9. Ubuntu 14 Trusty安装hue

    想开始学习一下hive,需要一个使用起来方便的客户端,网上搜了一下发现hue是个很常用的工具.于是,就在自己的ubuntu14系统里,尝试安装hue.下面就是自己的安装步骤,记录如下: 1.先查看自己 ...

  10. Windows Server 2012 虚拟化实战:网络(二)

    关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Window ...