js冒泡事件综合 ! 阻止子代冒泡 阻止父级冒泡 阻止同级冒泡
来源:互联网 发布:诺亚网络萝卜街 编辑:程序博客网 时间:2024/06/03 20:23
今天遇到一个问题,组件中同元素绑定了多个相同的事件a,b,在a事件中有一个回调函数返回一个布尔类型值,如果为真则继续下去,如果假则直接return;
那么我们先来了解一下事件对象中阻止事件的几个方法:
1. event.preventDefault(); -- 阻止元素的默认事件。
注:a元素的点击跳转的默认事件 ,
button,radio等表单元素的默认事件 ,
div 元素没有默认事件
例:
<a href="http://www.baidu.com" target="_black">百度</a>
var samp = document.getElementByTagName("a");samp.addEventListener("click",function(e){e.preventDefault()},false);
解释:点击链接的时候正常情况下会发生跳转,但是现在我们阻止了它的默认事件,即跳转事件,这时就不会跳转到百度了。
2. event.stopPropagation(); -- 阻止元素冒泡事件
注:嵌套元素一般都存在冒泡事件,会带来某些影响
例:
<div id="c1" onclick="alert(1)"><div id="c2" onlick="alert(2)"><input type="button" id="c3" value="点击" onclick="alert(3)"></div></div>
这里点击button的时候,浏览器会先后弹出3,2,1,本来只想让绑定在button上的事件发生,却无意中触发了它的两个父级上的事件,这里我们只是做了一个简单测试,试想如果在项目开发中,某个按钮和他的父级同时绑定了很重要的事件,那么结果会惨不忍睹。这时的处理方法就是阻止冒泡事件。
给input注册click事件,同时阻止它的冒泡事件
document.getElementById(‘c3‘).addEventListener(‘click‘,function(e){e.stopPropagation()},false);
3:event.stopImmediatePropagation()--阻止同元素同类型事件叠加
以上的方法只能阻止事件冒泡(也就是父级元素的同类型事件),但不能阻止事件追加(同一元素的同类型事件)。
$(function(){ $("#green").click(function(event){ event.stopImmediatePropagation(); alert("green click"); }); $("#green").click(function(){ alert("green click2"); }); });
解释:代码中为元素绑定了两个click事件,通过event.stopImmediatePropagation(); 能够阻止下一个click事件被触发,event.stopImmediatePropagation()不但可以阻止green click2事件,同时也阻止事件冒泡。
所以,我通过event.stopImmediatePropagation()实现了任务需求。
Jquery如何阻止元素冒泡同类型事件
- js冒泡事件综合 ! 阻止子代冒泡 阻止父级冒泡 阻止同级冒泡
- Js 冒泡事件阻止
- 阻止js事件冒泡
- JS阻止事件冒泡
- JS阻止事件冒泡
- Js 冒泡事件阻止
- JS事件冒泡(阻止
- js 阻止冒泡事件
- JS阻止冒泡事件
- JS阻止事件冒泡
- JS 阻止事件冒泡
- js阻止冒泡事件
- Js 冒泡事件阻止
- Js 冒泡事件阻止
- Js 冒泡事件阻止
- js阻止事件冒泡
- JS阻止事件冒泡
- js阻止事件冒泡
- 解决poi导出excel中文列宽问题
- Okhttp上传
- solr 安装与配置
- 【搬运工】值得一提的生活窍门
- 队列的相关实现
- js冒泡事件综合 ! 阻止子代冒泡 阻止父级冒泡 阻止同级冒泡
- linux内核编译过程的最终总结版
- NKOJ 4250 小区划分(dp)
- python中常见运算符优先级使用规律
- 关于函数的返回
- 数据库学习纪要(二十七):MySQL-7-外联接、自联接与联合
- Codeforces 870E 并查集 解题报告
- idea for mac 最全快捷键整理
- CentOS7和CentOS6怎样开启MySQL远程访问