label绑定click事件也会触发所包含内部表单的click事件,你踩过坑吗?
来源:互联网 发布:朝鲜官二代 知乎 编辑:程序博客网 时间:2024/05/17 07:58
昨天在做项目的时候突然遇到一个坑,就是给label绑定一个click事件之后,点击触发事件,竟然会触发两次,瞬间就懵逼了,当时的表情是这样的
纠结了1个多小时,一直以为是有绑定了相应的表单事件,所以造成冒泡,才会触发两次,但是调试了很久,还是没有找到有绑定的事件,于是当时的表当又变成这样了。
闲话少说,上
田园马如下所示:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> label{display: inline-block;width:200px;height:40px;border:1px solid #ccc;} </style></head><body> <div class="ob"> <label> 输入值: <input type="radio" class="ip" placeholder="输入值"> </label> </div> <script> var ob = document.querySelector(".ob label"); var ip = ob.querySelector(".ip"); ob.onclick = function(){ alert("我触发了。"); } ip.onclick = function(){ alert("我是表单元素被触发了。") } </script></body></html>
然后你会发现,点击label(不是点击里面表单元素),则会弹出两次 alert(“我触发了。”);
此时是不是瞬间觉得崩溃有种想吐血的感觉?
不过当你删除掉label里面的表单元素的时候又会发现只会弹出一个alert(“我触发了。”);
昨天就是遇到这样的情况,然后心里面就突然想到了一个词“冒泡“,于是就有下面的野马:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> label{display: inline-block;width:200px;height:40px;border:1px solid #ccc;} </style></head><body> <div class="ob"> <label> 输入值: <input type="radio" class="ip" placeholder="输入值"> </label> </div> <script> var ob = document.querySelector(".ob label"); var ip = ob.querySelector(".ip"); ob.onclick = function(){ alert("我触发了。"); } ip.onclick = function(){ alert("我是表单元素被触发了。") } //阻止冒泡 ip.onclick = function(e){ e = e || window.event; e.stopPropagation(); } </script></body></html>
然后发现竟然没有触发两次了,当时的我的心情是这样的。
阅读全文
1 0
- label绑定click事件也会触发所包含内部表单的click事件,你踩过坑吗?
- 点击label时click事件被触发两次的坑
- jquery在某种情况下绑定click事件会触发多次click的解决方案
- click触发raisevent事件
- jquery 绑定click事件
- jquery click事件绑定
- click绑定事件介绍
- vue绑定click事件
- JQuery绑定click事件
- label的click()事件执行两次
- label的click()事件执行两次
- 单击按钮触发file的click事件
- 回车触发按钮的click事件
- iScroll click事件触发两次的解决方案
- 触发click事件 浏览器兼容
- jquery 触发click等事件
- jquery触发click事件问题
- requestFullscreen触发事件click/pointerdown
- struts问题积累(1)
- VC2008/2015 和 Mac 编译 openssl-1.0.2k
- oracle数据库误删数据恢复方法
- Eclipse SVN资源同步符号说明
- ssm框架之下拉框
- label绑定click事件也会触发所包含内部表单的click事件,你踩过坑吗?
- spring总结(1)
- JS本地对象之Date
- C语言 指针 详解 一
- crond、crontab调研
- spring问题积累(1)
- 读书
- 动态规划-经典题型
- LAMP^%LNMP环境搭建