DOM事件类

基本概念:

DOM事件的级别

DOM0   element.onclick = function(){};

DOM2   element.addEventListener('click',function(){},false);

DOM3   element.addEventListener('keyup',function(){},false);

DOM事件模型

捕获:从上到下

冒泡:从当前元素到上

DOM事件流

一个完整的事件流分为三个阶段

第一阶段:捕获

第二阶段:目标阶段

第三阶段:冒泡(目标元素到window对象)

描述DOM事件捕获的具体流程

从上到下,第一个接收到的对象是window->document->html->body->目标元素

如何用js获取html结点:document.documentElement

Event对象的常见应用

     1.对事件原理的掌握,捕获冒泡的流程

     2.如何注册事件,监听用户交互行为

event.preventDefault();阻止默认行为

event.stopPropagatioon();阻止冒泡

event.stopImmediatePropagation();一个元素有两个执行事件,事件响应优先级问题可以用此设置

event.currentTarget;在事件冒泡阶段内的当前 DOM 元素,通常等于 this

event.target;返回哪个 DOM 元素触发了事件;for循环多个元素的点击事件可以用此处理

自定义事件

var eve = new Event('custome');
ev.addEventListener('custome',function(){
    console.log('custome');
});
ev.dispatchEvent(eve);

var eve = new CustomEvent('custome',obj);//与Event全部一样,唯一不同是CustomEvent可以传一个对象参数

 事件捕获的顺序:

<div id="button">
	<style type="text/css">
		#button{
			width: 100px;
			height: 40px;
			line-height: 40px;
			text-align: center;
			background: red;
			cursor: pointer;
		}
	</style>
	目标元素
</div>
<script type="text/javascript">
	var button = document.getElementById("button");
	window.addEventListener('click',function(){
		console.log("window capture");
	},true);
	document.addEventListener('click',function(){
		console.log("document capture");
	},true);
	document.documentElement.addEventListener('click',function(){
		console.log("html capture");
	},true);
	document.body.addEventListener('click',function(){
		console.log("body capture");
	},true);
	button.addEventListener('click',function(){
		console.log("button capture");
	},true);
</script>

事件冒泡的顺序

<div id="button">
	<style type="text/css">
		#button{
			width: 100px;
			height: 40px;
			line-height: 40px;
			text-align: center;
			background: red;
			cursor: pointer;
		}
	</style>
	目标元素
</div>
<script type="text/javascript">
	var button = document.getElementById("button");
	window.addEventListener('click',function(){
		console.log("window capture");
	},false);
	document.addEventListener('click',function(){
		console.log("document capture");
	},false);
	document.documentElement.addEventListener('click',function(){
		console.log("html capture");
	},false);
	document.body.addEventListener('click',function(){
		console.log("body capture");
	},false);
	button.addEventListener('click',function(){
		console.log("button capture");
	},false);
</script>

/*自定义事件*/
var eve = new Event('test');
button.addEventListener('test',function(){
	console.log('test dispatch');
});
setTimeout(function(){
	button.dispatchEvent(eve);
},5000);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值