通常做网页时不会用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. HibernateUtil.java

    package com.hkwy.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org ...

  2. Css3新特性应用之视觉效果

    一.单侧阴影 box-shadow属性的应用,格式:h-shadow v-shadow blur spread color inset属性取值介绍 h-sahdow:水平阴影的位置,允许负值 v-sh ...

  3. 《.NET开发资源大全》

    目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理( ...

  4. CSS类似微软中国首页的竖向选项卡

    效果体验:http://hovertree.com/texiao/css/24/ 源码下载:http://hovertree.com/h/bjaf/hardklps.htm 代码如下: <!DO ...

  5. 用 Excel 测试“绘制两点间连线”的算法

    最近在研究和制作数字示波器,其中涉及一个小算法:需要将 ADC 采样的数值在 TFT LCD 屏幕上面显示并且用“线”连接起来. ADC 按照时序对输入电压采样后,记录的是一个个的数值,如果显示的时候 ...

  6. tableView显示第一个cell有偏移问题

    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0 ...

  7. floyd算法学习笔记

    算法思路 路径矩阵 通过一个图的权值矩阵求出它的每两点间的最短路径矩阵.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1):又 ...

  8. Redis五种基本数据结构

    1.字符串 示例: 2.列表 示例: 3.集合 示例: 4.散列 示例: 5.有序集合 待续...

  9. iOS系列 基础篇 07 Action动作和输出口

    iOS系列 基础篇 07 Action动作和输出口 目录:  1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...

  10. ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock

    ubuntu 常见错误--Could not get lock /var/lib/dpkg/lock 通过终端安装程序sudo apt-get install xxx时出错:E: Could not ...