js冒泡、捕获事件及阻止冒泡方法详细总结
2023-06-13 09:15:26 时间
javascript,jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结。
事件冒泡是一个从子节点向祖先节点冒泡的过程;
事件捕获刚好相反,是从祖先节点到子节点的过程。
给一个jquery点击事件的例子:
代码如下:
复制代码代码如下:
事件冒泡是一个从子节点向祖先节点冒泡的过程;
事件捕获刚好相反,是从祖先节点到子节点的过程。
给一个jquery点击事件的例子:
代码如下:
<!DOCTYPEhtml>
<metacharset="utf-8">
<title>test</title>
<head>
<scriptsrc="http://code.jquery.com/jquery-latest.js"></script>
<scripttype="text/javascript">
$(function(){
$("#clickMe").click(function(){
alert("hello");
});
$("body").click(function(){
alert("baby");
});
});
</script>
</head>
<body>
<divstyle="width:100px;height:100px;background-color:red;">
<buttontype="button"id="button2">clickme</button>
<buttonid="clickMe">click</button>
</div>
</body>
</html>
事件冒泡现象:点击“id=clickMe”的button,会先后出现“hello”和“baby”两个弹出框。
分析:当点击“id=clickMe”的button时,触发了绑定在button和button父元素及body的点击事件,所以先后弹出两个框,出现所谓的冒泡现象。
事件捕获现象:点击没有绑定点击事件的div和“id=button2”的button,都会弹出“baby”的对话框。
在实际的项目中,我们要阻止事件冒泡和事件捕获现象。
阻止事件冒泡方法:
法1:当前点击事件中returnfalse;
$("#clickMe").click(function(){
alert("hello");
returnfalse;
});
法2:
$("#clickMe").click(function(event){
alert("hello");
vare=window.event||event;
if(e.stopPropagation){//如果提供了事件对象,则这是一个非IE浏览器
e.stopPropagation();
}else{
//兼容IE的方式来取消事件冒泡
window.event.cancelBubble=true;
}
});
貌似捕获事件不能被阻止
相关文章
- Fabric.js 使用纯色遮挡画布(前景色)
- js 手动触发input事件
- html如何只刷新页面指定,js控制页面刷新 JS刷新当前页面的几种方法总结
- js中splice是什么意思_vue中splice方法
- 【说站】js中有哪些焦点事件
- js手机号正则校验_正则表达式验证手机号码格式
- JS手撕(七) 事件总线
- get两个js小技能——JS截取视频第一帧&图片转Base64
- JS实现简易图片轮播效果详解编程语言
- JS removeEventListener()和detachEvent()方法:销毁事件
- 妙用JS获取Oracle信息的快速方法(js获取Oracle)
- JS将文件传输至MySQL数据库(.js传文件至mysql)
- CSS和JS标签style属性对照表(方便js开发的朋友)
- JS的Event事件对象使用方法
- 用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
- js移除事件js绑定事件实例应用
- js判断一个元素是否在页面中存在
- js自定义事件及事件交互原理概述(一)
- js绑定键盘鼠标事件示例代码
- js通过更改按钮的显示样式实现按钮的滑动效果
- 跟我学Nodejs(二)---Node.js事件模块
- 深入分析js的冒泡事件
- js事件监听机制(事件捕获)总结