关于label的点击事件(原创)
通常做网页时不会用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的点击事件(原创)的更多相关文章
- 给label添加点击事件
后台代码: lb1.Attributes.Add("onclick", "getSN('" + lb1.Text.Trim() + "')" ...
- 解决label点击事件触发两次问题
问题描述: 通常,为了用户体验,我们点击单选框或者复选框后面文字,即可选中当前项.代码如下: <label> <input type="radio" name=& ...
- Qt:添加点击事件的Label并显示图片
1.给label添加点击事件 Qt中原本的label是没有点击事件的,如果想添加点击事件的话,可以继承QLabel类并重载鼠标事件(比如mousePressedEvent),然后在鼠标事件中发送一个信 ...
- 【MAUI】为 Label、Image 等控件添加点击事件
一.前言 已经习惯了 WPF.WinForm 中"万物皆可点击"的方式. 但是在 MAUI 中却不行了. 在 MAUI 中,点击.双击的效果,是需要通过"手势识别器&qu ...
- iOS开发小技巧 - label中的文字添加点击事件
Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...
- label标签内含有input元素,点击事件会触发两次
**label标签内含有input元素,点击事件会触发两次** 如果你的结构是label内写input实现点击文字时候input也有相应.并且,把事件设置在了label上,那么就会执行两次了. //h ...
- 解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
问题描述: 在IE8及以下版本时,点击label标签无法自动触发checkbox的click事件,导致无法产生希望的效果. 原HTML代码: <div class="col-s ...
- label 阻止冒泡 防止点击label 触发2次事件
// 必须要把 jnput的外面的label加上事件阻止冒泡,否则点击label的时候,会冒泡到input上 再次触发input的点击事件 $('.xt_order_cleft_modb_rl_dx' ...
- [Swift通天遁地]一、超级工具-(1)动态标签:给UILabel文字中的Flag和url添加点击事件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
随机推荐
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
- ASP模拟POST请求异步提交数据的方法
这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ...
- C#模拟HTTP Form请求上传文件
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO ...
- 菜鸟快飞之JavaScript函数
1.复制变量值 在说函数前,我觉得需要先说说关于变量值的复制,以便后面的理解. 复制基本类型的值: 当一个变量复制另外一个值为基本类型的变量时,两个变量可以参与任何操作而不会互相影响 var num1 ...
- css基础
一. web标准化 (1).内容与样式,行为分离 (2).html用来定义语义内容,以及内容的结构 (xhtml) (3).xhtml标准 a.xhtml 必须强制指定文档类型 DocType,HTM ...
- SAP CRM 客户控制器与数据绑定
当用户从视图离开时,视图将失去它的数据.解决这个问题,需要引入客户控制器(Custom Controller)(译者注:SAP CRM客户端中,不同地方的Custom Controller会翻译为“客 ...
- CentOS7上安装QGIS
1.加入YUM源 rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm ...
- GDAL生成Erdas Imagine
GDAL原生支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括• ArcInfo grids, ArcSDE raster, Imagine, Idrisi, ENVI, GRAS ...
- SlidingMenu 侧滑菜单的用法
很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,将侧滑菜单引入项目的方式很多中,先通过例子介绍各种引入方式,然后给大家展示个 ...
- [Modern OpenGL系列(一)]十步搞定OpenGL开发环境
本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51292143 OpenGL官网:https://www.opengl.or ...