事件冒泡

首先需要知道什么是事件冒泡?

事件冒泡是从里面的往外面开始触发的,就是点击子节点,会向上触发父节点,祖先节点的点击事件

demo:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>4-4-1</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
} body {
font-size: 13px;
line-height: 130%;
padding: 60px;
} #content {
width: 220px;
border: 1px solid #0050D0;
background: #96E555;
} span {
width: 200px;
margin: 10px;
background: #666666;
cursor: pointer;
color: white;
display: block;
} p {
width: 200px;
background: #888;
color: white;
height: 16px;
}
</style>
<script src="../scripts/jquery-1.3.1.js"></script>
<script type="text/javascript">
$(function () {
// 为span元素绑定click事件
$('span').bind("click", function () {
$("#msg").append("<p>内层span元素被点击.<p/>")
});
// 为div元素绑定click事件
$('#content').bind("click", function () {
$("#msg").append("<p>外层div元素被点击.<p/>")
});
//// 为body元素绑定click事件
$("body").bind("click", function () {
$("#msg").append("<p>body元素被点击.<p/>")
});
})
</script>
</head>
<body>
<div id="content">
外层div元素
<span>内层span元素</span>
外层div元素
</div> <div id="msg"></div>
</body>
</html>

  

当点击内层的span事件时,外层的div事件和body,也会执行的。

如何阻止冒泡事件?

一般来说有三种方法:

  1. 使用stopstopPropagation;
  2. 使用retrun false;
  3. 使用阻止默认行为preventDefault;

1.使用stopstopPropagation

只需要在后面加入event.stopPropagation();就可以阻止事件冒泡

  $('span').bind("click", function () {
$("#msg").append("<p>内层span元素被点击.<p/>")
event.stopPropagation();
});

2.使用retrun false;

  $('span').bind("click", function () {
$("#msg").append("<p>内层span元素被点击.<p/>")
return false;
});

3.使用阻止默认行为

JQuery阻止默认行为

retrun false和 stopstopPropagation的区别

return false 不仅阻止了事件往上冒泡,而且阻止了事件本身。

event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。

最新文章

  1. 随笔SublimeText Theme安装
  2. 华为 MATE7 调试 LOCAT 日志不输出问题
  3. immutableJS一些API
  4. C Primer Plus(第五版)12
  5. LPC43xx Dual-core or Multi-core configuration and JLink Debug
  6. Reactor模式与Proactor模式
  7. Qt webkit插件相关知识
  8. Redis 笔记与总结8 PHP + Redis 信息管理系统(分页+好友关注)
  9. 配置WindowsLiveWriter,写cnblogs博客
  10. 笔记-Nodejs中的核心API之Events
  11. Android:Notification的生成与取消
  12. UIView 面面观
  13. VOOC还真算是OPPO的核心技术
  14. 云主机与vps虚拟主机的区别
  15. ubuntu初始化python3+postgresql+uwsgi+nginx+django
  16. BZOJ.5110.[CodePlus2017]Yazid 的新生舞会(线段树/树状数组/分治)
  17. macbook 显示所有文件夹
  18. 启动node程序报错:event.js:183 throw er; // unhandled &#39;error&#39; event
  19. uva-10700-贪心
  20. Google&#39;s Machine Learning Crash Course #02# Descending into ML

热门文章

  1. 【数据库】1.0 MySQL入门学习(一)——常识性知识
  2. Bootstrap导航栏navbar源码分析
  3. Java设计模式—门面模式(带案例分析)
  4. Java使用POI操作Excel文件
  5. PopupWindow简单使用
  6. Ubuntu 安装第一步,打开ssh
  7. postman接口案例
  8. JDBC操作数据库的基本步骤:
  9. 深入Python(1): 字典排序 关于sort()、reversed()、sorted()
  10. Python之List和Tuple类型(入门3)