JavaScript示例六(事件冒泡与捕获)

<html>
	<head>
		<title>
			事件冒泡与事件捕获示例
		</title>
		<style type="text/css">
			div{
				color:red;
			}
		</style>
	</head>
	<body>
	<div id="myDiv" class="main" onclick="alert('click div');">
		<p>div接受点击事件</p>
		<form method="post">
			<input type="text" name="username" value="zhang">
			<input type="button" id="mybtn" value="click me">
		</form>
	</div>

	<ol id="dropdown">
		<li><a href="#">List item 1</a>
			<ol>
				<li><a href="#">List item 1.1</a></li>
				<li id="myli"><a href="#">List item 1.2</a></li>
				<li><a href="#">List item 1.3</a></li>
			</ol>
		</li>

	</ol>

	<script type="text/javascript">
		var btn=document.getElementById("mybtn");
		var myol=document.getElementById("dropdown");
		var myli=document.getElementById("myli");

		var handler=function(event){
			switch (event.type){
				case "click":
					alert("click button");
					break;
				/*
				case "mouseover":
					event.target.style.backgroundColor="green";
					alert(event.screenX+","+event.screenY);
					break;
				case "mouseout":
					event.target.style.backgroundColor="";
					break;
				*/
			}
		}

		var handler2=function(){
			alert("click ol");
		}

		var handler3=function(){
			alert("click li");
		}

		//冒泡阶段处理事件,自下而上执行
		btn.addEventListener("click",handler,false);
		btn.addEventListener("mouseover",handler,false);
		btn.addEventListener("mouseout",handler,false);

		//捕获阶段处理事件,自上而下执行
		myol.addEventListener("focus",handler2,true);
		myli.addEventListener("focus",handler3,true);
	</script>
	</body>
</html>

时间: 2024-10-06 23:14:37

JavaScript示例六(事件冒泡与捕获)的相关文章

JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)

1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函数都是对象,都会占用内存,内存中对象越多,性能越差. 2.必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间. 怎样处理由于事件较多引起的性能差: 1.采用事件委托技术,限制简历的连接数量 2.在不需要的时候移除事件处理程序 例子: html: <div id="myDiv&

事件冒泡与捕获

事件流指的是页面中接收事件的顺序,IE,火狐和chrome浏览器都是事件冒泡,所谓是事件冒泡指的是事件最开始由最具体的元素接收,然后逐级向上传播到不具体的节点.而事件捕获则正好相反,事件捕获是由Netscape提出的,事件冒泡和捕获具体如下图所示: 虽然事件捕获是Netscape唯一支持的事件流模型,但目前IE9,火狐和谷歌也都支持这种事件流模型. 事件冒泡的好处 因为事件具有冒泡机制,因此我们可以利用冒泡的原理,把事件加到父级上,触发执行效果.这样做的好处当然就是提高性能了. 如果说我们可能有

[JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播

-->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的onclick事件也会被触发.js里称这种事件连续发生的机制为事件冒泡或者事件捕获.IE浏览器:事件从里向外发生,事件从最精确对象(target)开始触发,然后到最不精确的对象(document)触发,即事件冒泡 Netscape:事件从外向里发生,事件从最不精确的对象(document)开始触发,然后到最精确对象(

JS 事件冒泡、捕获。学习记录

作为一个转行刚到公司的新人,任务不多,这一周任务全部消灭,闲暇的一天也别闲着,悄悄的看起了书.今天写一下JS的事件冒泡.捕获. 也是今天看的内容有点多了,有些消化不了,就随手记录一下.纯属自我理解,如果有不对,还请指导提出,小弟一定改正. 好了,话不多说.那么事件冒泡是什么? 举个例子 ul > li > div > p . 这个时候你点击P,他会一层一层的往上执行,直到最后绑定事件的元素.假如我们绑定事件在ul上,那么点击P,他就会逐级往上走,直到找到绑定事件的ul也会触发事件,那么在

JavaScript系列之事件冒泡机制简介

JavaScript系列之事件冒泡机制 DOM事件流(event flow )存在三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播. 听了简介介绍之后,您可能不理解,所以举个例子: <html> <head> <title>js事件冒泡测试</title> </head> <body>

事件冒泡与捕获&amp;事件委托

设想这样一种情况 一个div里面有个span元素  ,当鼠标单击span时,这个事件算是谁的? div还是span? 准确的说两个都触发了,这种认可大家都同意,事实就是这样的, 第二个问题来了,这个事件应该有个先后顺序 ,先触发span还是div? 早期就有两个主流的浏览器厂商各执己见,IE认为,这个事件首先触发span,然后依次往父节点传递,最终传递到document,(这个过程称为冒泡) 网景浏览器认为,任何事件都首先触发document,然后依次往下传递到span元素,(这个过程称为捕获)

事件冒泡与捕获&amp;amp;事件托付

设想这样一种情况 一个div里面有个span元素  ,当鼠标单击span时,这个事件算是谁的? div还是span? 准确的说两个都触发了,这种认可大家都允许,事实就是这种, 第二个问题来了,这个事件应该有个先后顺序 ,先触发span还是div? 早期就有两个主流的浏览器厂商各执己见,IE觉得,这个事件首先触发span,然后依次往父节点传递,终于传递到document,(这个过程称为冒泡) 网景浏览器觉得,不论什么事件都首先触发document,然后依次往下传递到span元素,(这个过程称为捕获

javascript中的事件冒泡、事件捕获和事件执行顺序

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有着相当大的影响.这两种事件流分别是捕获和冒泡.和许多Web技术一样,在它们成为标准之前,Netscape和微软各自不同地实现了它们.Netscape选择实现了捕获事件流,微软则实现了冒泡事件流.幸运的是,W3C决定组合使用这两种方法,并且大多数新浏览器都遵循这两种事件流方式. 1事件传播--冒泡与捕

JavaScript事件——冒泡、捕获

本节要点:1.干预系统的事件处理机制(一)DOM事件流 (二)停止事件冒泡 (三)阻止事件的默认行为 1.干预系统的事件处理机制 (一)DOM事件流 DOM模型是一个树形结构,在DOM模型中,HTML元素是有层次的.当一个HTML元素上产生一个事件时,该事件会在DOM树中元素节点与根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程就是DOM事件流. DOM事件标准定义了两种事件流,分别是捕获事件和冒泡事件. 1.冒泡事件流 默认情况下,事件使用冒泡事件流.当事件(例如单击事