如何阻止事件冒泡和默认行为?

小课堂【武汉262期】

分享人:聂义中

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

事件冒泡

 当事件发生后,这个事件就要开始传播(从里到外或者从外向里)。为什么要传播呢?因为事件源本身 (可能)并没有处理事件的能力,即处理事件的函数(方法)并未绑定在该事件源上。例如我们点击一个 按钮时,就会产生一个click事件,但这个按钮本身可能不能处理这个事件,事件必须从这个按钮传播出去 ,从而到达能够处理这个事件的代码中(例如我们给按钮的onclick属性赋一个函数的名字,就是让这个 函数去处理该按钮的click事件),或者按钮的父级绑定有事件函数,当该点击事件发生在按钮上, 按钮本身并无处理事件函数,则传播到父级去处理。

默认行为

浏览器的一些默认的行为。例如:如链接点击后跳转到相应的页面 ,提交按钮点击时会提交表单数据、 鼠标点击右键会弹出菜单,滑动滚轮控制滚动条等等。

2.知识剖析

事件冒泡与默认事件举例

demo

3.常见问题

如何阻止事件冒泡和默认事件?

4.解决方案

阻止事件冒泡

非IE提供stopPropagation()方法,使用event对象在事件函数中调用就行 IE中提供的是,cancelBubble属性,默认为false,当它设置为true时,就是阻止事件冒泡,也是用event对象在事件函数中调用

阻止默认行为

非IE提供preventDefault()方法来取消事件默认行为,但是只有当cancelable属性设置为true的事件, 才可以使用preventDefault()来取消事件默认行为,使用event对象在事件函数中调用就行 IE中提供的是returnValue属性,默认为true,当它设置为false时,就是取消事件默认行为,也是用event对象在事件函数中调用

5.编码实战

6.扩展思考

还有什么方法可以在阻止事件冒泡和默认行为

return false

原生js return false 只会阻止默认行为

jQuery里面 return false既可以阻止冒泡还可以阻止默认行为

7.参考文献

  1. 前端开发博客
  2. 脚本之家

8.更多讨论

鸣谢

感谢大家观看

BY : 聂义中