通常做网页时不会用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. HttpClient调用webApi时注意的小问题

    HttpClient client = new HttpClient(); client.BaseAddress = new Uri(thisUrl); client.GetAsync("a ...

  2. JS阻止事件冒泡

    在使用JS事件的时候,外层元素事件有可能被里层元素的事件触发,例如点击里层元素外层也触发了点击,这种现象称为事件冒泡.(李昌辉) <div id="wai"> < ...

  3. javaScript的内置对象

    javaScript 有11种内置对象: Array . String .Date .Math . Boolean .Number . Function .Global .Error . RegExp ...

  4. O365(世纪互联)SharePoint 之调查列表简单介绍

    前言 SharePoint中为了提供了很多开箱即用的应用程序,比如调查列表就是其中之一,同样,在O365版本里(国际版和世纪互联版本均可),也有这样的调查列表可以供我们使用,而使用起来非常方便和快速, ...

  5. 【代码笔记】iOS-获得现在的日期

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  6. [Erlang 0120] Know a little Core Erlang

      Erlang开发者或多或少都用过或者听说过Core erlang,它是什么样的呢?新建一个测试模块a.erl,如下操作会生成core erlang代码而非a.beam:   Eshell V6.0 ...

  7. C#语句2——循环语句(for循环与for循环嵌套)

    循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. for(初始条件;循环条件;状态改变) { 循环体 } break ——中断循环,跳出整个循环 continue——停止本 ...

  8. JavaSe:Properties文件格式

    Properties文件格式说明 Properties继承自Hashtable,是由一组key-value的集合. 在Java中,常用properties文件作为配置文件.它的格式是什么样的呢? 下图 ...

  9. JDWP Agent

    JDWP Agent Implementation Description Revision History Disclaimer 1. About this Document 1.1 Purpose ...

  10. [iOS]ReactiveCocoa安装方法

    1. 替换Ruby镜像 我们想要使用CocoaPods来安装ReactiveCocoa.由于OS X上的Ruby镜像被墙了,感谢淘宝为我们提供了国内访问镜像. $ gem sources --remo ...