认识事件冒泡

一.事件冒泡就是多个元素同时响应了同一个事件,前提是这些元素都绑定了这一个事件。这只是我的定义,感觉好理解些。

称它为冒泡,是因为事件会按照DOM元素的层次结构依次执行,就像水泡一样不断浮向顶端。所以称之为事件冒泡。

这个图便于理解,我用箭头来代替冒泡:

二.通过demo来认识


@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<script type="text/javascript" src="/Scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("span").bind("click", function () {
var text = $("#msg").html() + "<p>span元素单击事件</p>";
$("#msg").html(text);
});
});
$(function () {
$("#content").bind("click", function () {
var text = $("#msg").html() + "<p>div元素单击事件</p>";
$("#msg").html(text);
});
});
$(function () {
$("body").bind("click", function () {
var text = $("#msg").html() + "<p>body元素单击事件</p>";
$("#msg").html(text);
});
});
</script>
<title>BubbleEvent</title>
</head>
<body >
<div id="content">
DIV元素
<span>SPAN元素</span>
</div>
<div id="msg"></div>
</body>
</html>

依次点击span,div,body会出现效果图:(body的点击事件只作用于当前内容所占区域,而不是整个网页区域

三.解决事件冒泡

先认识下事件对象,在上面程式中添加一个参数event,点击span元素时,事件对象就会被创建,这个事件对象只有事件函数才能访问,事件函数处理完后

事件对象会销毁。

事件对象具有自己的属性

jquery中stopPropagation()方法可以停止事件冒泡


  $(function () {
$("span").bind("click", function (event) {
var text = $("#msg").html() + "<p>span元素单击事件</p>";
$("#msg").html(text);
alert(event.type);//event类型是click
event.stopImmediatePropagation(); //停止事件冒泡方法
});
});

此时点击span元素效果:

时间: 2024-10-20 01:25:05

认识事件冒泡的相关文章

##阻止事件冒泡和取消默认操作

取消事件冒泡 事件冒泡指当一个元素的事件被触发的时候,比如鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发,这个过程被称为事件冒泡.这个事件是从原始元素开始一直冒泡到DOM树的最上层.事件传播的3个阶段:捕获.冒泡.目标阶段. 阻止事件冒泡:w3c的方法是event.stopPropagation(),IE则是使用event.cancelBubble = true; 兼容性写法: var event = event || window.event; if(event &&

js之事件冒泡和事件捕获详细介绍

(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> html -> document -> window (2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开

vue学习笔记(一)关于事件冒泡和键盘事件 以及与Angular的区别

一.事件冒泡 方法一.使用event.cancelBubble = true来组织冒泡 <div @click="show2()"> <input type="button" value="按钮" @click="show1($event)"> </div> methods:{ show1:function(ev){ console.log(ev); alert(1); ev.cancelB

js事件冒泡和事件委托

js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: 1 <ul class="clearfix" data-type="cityPick"> 2 <li class="active_sort_opts" data-id="0">全部</li> 3 <li data-id="88">纽约</li> 4 <

jQuery[补1] - 事件冒泡和阻止冒泡

假设网页上有两个元素,其中一个元素嵌套在另一个元素中,并且都被绑定了 click 事件,同时 body 元素上也绑定了 click 事件. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="conten

js 阻止事件冒泡和默认行为 preventDefault、stopPropagation、return false

preventDefault: preventDefault它是事件对象(Event)的一个方法,作用是取消一个目标元素的默认行为.既然是说默认行为,当然是元素必须有默认行为才能被取消,如果元素本身就没有默认行为,调用当然就无效了.什么元素有默认行为呢?如链接<a>,提交按钮<input type=”submit”>等.当Event对象的cancelable为false时,表示没有默认行为,这时即使有默认行为,调用 preventDefault也是不会起作用的. 我们都知道,链接&

js时间冒泡,阻止事件冒泡

首先解释一下事件冒泡神什么, 在js中,假如在div中嵌套一个div 如 <style type="text/css"> #box1{width:500px;height:500px;background:#900;} #box2{width:400px;height:400px;background:#090;} #box3{width:300px;height:300px;background:#009;} #box4{width:200px;height:200px;

jQuery中的事件冒泡

1.什么是冒泡 eg: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>事件冒泡</title> <script src="

关于事件捕获和事件冒泡

这篇随笔主要是写关于事件冒泡和事件捕获的一些关联,主要是从<JavaScript高级程序设计>这本书第13章总结扩展而来,今天主要是想扩展对书本里面P358页以及加深一下理解. 一.先说一下定义: 事件冒泡阶段:从最具体的元素,即目标事件位置往文档的根节点方向回溯,从内向外冒泡事件对象(所有浏览器都支持). 事件捕获阶段:先由文档的根节点document往事件触发对象,从外向内捕获事件对象(DOM2级事件要求时间从document对象开始传播,但是IE9,Safari,Chrome,Opera

JavaScript中的事件冒泡定义及取消

事件冒泡:如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B的onclick也会被触发.触发的顺序是“由内而外” . 验证:在页面上添加一个div.p.strong,在div.p.strong中添加onclick事件响应 取消事件冒泡: window.event.cancelBubble = true;//IE下的写法. arguments[0].stopPropagation();//火狐中的写法. 例子: <html xmlns="http://www.w3.