javascript - 事件详解(阻止事件冒泡+阻止事件行为)
2024-09-02 10:29:46
一、事件流
1.事件流
描述的是在页面中接受事件的顺序
2.事件冒泡
由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点
(最具体 –> 最不具体)
3.事件捕获
最不具体的节点先接收事件,而最具体的节点应该是最后接收事件
(最不具体 –> 最具体)
2.事件处理
1.HTML事件处理
直接添加到HTML结构中
2.DOM0级事件处理
把一个函数赋值给一个事件处理程序属性
<button id="btn">按钮</button>
<script type="text/javascript">
document.getElementById("btn").onclick = function () {
alert("DOM0级事件处理1");//多个事件会被覆盖掉
}
document.getElementById("btn").onclick = function () {
alert("DOM0级事件处理2");
}
</script>
3.DOM2级事件处理
addEventListener(“事件名”,”“事件处理函数”,“布尔值”)
当前版本,一般布尔值都不操作。
true:事件捕获
false:事件冒泡
removeEventListener();
<button id="btn">按钮</button>
<button id="btn2">DOM2级按钮</button>
<script type="text/javascript">
//document.getElementById("btn").onclick = function () {
// alert("DOM0级事件处理1");//多个事件会被覆盖掉
//}
//document.getElementById("btn").onclick = function () {
// alert("DOM0级事件处理2");
//} var btn2 = document.getElementById("btn2");
btn2.addEventListener("click", function () {
alert("DOM2级事件处理1");
}) btn2.addEventListener("click", demo1);
btn2.addEventListener("click", demo2); function demo1() {
alert("DOM2级事件处理2");
} function demo2() {
alert("DOM2级事件处理3");
}
//移除
//btn2.removeEventListener("click", demo2);
</script>
4.IE事件处理程序
attachEvent
detachEvent
3.事件对象
事件对象event
1).type:获取事件类型
2).target:获取事件目标
<div id="div1">
<button id="btn1">按钮</button>
</div>
<script type="text/javascript">
var btn1 = document.getElementById("btn1");
var div1 = document.getElementById("div1");
btn1.addEventListener("click", showType);
div1.addEventListener("click", showDiv);
function showType(event) {
document.write(event.type+"<br>");
document.write(event.target + "<br>");
} function showDiv(event) {
alert("div");
}
</script>
3).stopPropagation():阻止事件冒泡
没有调用showDiv,冒泡被取消了。
function showType(event) {
document.write(event.type+"<br>");
document.write(event.target + "<br>"); //组织事件冒泡
event.stopPropagation();
}
4).preventDefault():组织事件默认行为
(1)
<a id="aid" href="http://www.baidu.com">百度</a>
js
document.getElementById("aid").addEventListener("click", showaid);
function showaid() {
alert(1);
}
(2)在showaid方法里面,添加
e.stopPropagation();//阻止事件冒泡
(3)阻止默认行为
function showaid(e) {
alert(1);
e.stopPropagation();//阻止事件冒泡
e.preventDefault();//阻止默认行为(这里是跳转baidu)
}
----->------>
最新文章
- nodejs微信公众号快速开发|自定义关键字回复
- 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理
- 烂泥:Postfix邮件服务器搭建之虚拟用户配置
- JDBC总结
- Oracle EBS - AOL
- NC 单据保存时间过长,判断数据库锁表解决办法
- STL源码分析《4》----Traits技术
- 移动端rem布局的适配mixin【转藏】
- Java学习笔记——动态代理
- Linux下arp用法
- CDM业务单据,表体单价列赋值所需要注意的问题
- 移动端下拉刷新上拉加载-mescroll.js插件
- GitHub学习笔记:本地操作
- django介绍及路由系统
- python 垃圾回收
- C++ 匿名namespace的作用以及与static的区别
- python执行外部命令并获取输出
- 支付宝app支付服务端流程
- eclipse中改变默认的workspace的方法
- [工具] CintaNotes
热门文章
- 通用mapper将另外一个同名的表生成在同一个实体及mapper中
- c++ 简单的动态银河星空绘制(类应用)
- Linux三剑客:grep、awk、sed
- Python数据驱动DDT的应用
- l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
- 【hdu 6067】Big Integer
- 第09课:【实战】Redis网络通信模块源码分析(2)
- linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案
- 局部处理的边缘连接(python+opencv)
- HDU - 6582 Path (最短路+最小割)