事件委托,冒泡,捕获和行为

本文详细介绍了网页开发中各类事件的概念及其用法,包括鼠标事件、键盘事件、表单事件和页面事件等,同时深入探讨了事件绑定方法、事件冒泡与捕获机制,以及如何阻止默认行为和冒泡。

首先我们要搞明白什么是事件?
事件:就是满足条件后,会去执行某一段代码用户有操作的时候

鼠标事件用法
click鼠标单击
dbclick鼠标双击
onmousedown鼠标按下时
mouseup鼠标抬起时
mousemove鼠标移动
mouseover鼠标移入
mouseout鼠标移出
键盘事件用法
onkeyup抬起键时
onkeydown按下键时
onkeypress按下并放开任何字母数字键时
表单事件用法
onsubmit点击提交按钮时发生
onblur失去焦点时发生
onfocus获得焦点时发生
onchange内容发生变化并失去焦点时触发

页面事件:onload 窗体事件:onresize 滚动条事件:onscroll

事件绑定的方法

1.句柄 :写在HTML元素中,以属性的形式存在
2.DOM0级绑定 dom.on + 事件 = 处理函数
3.DOM2级绑定 事件监听器

键盘事件不需要选择元素

document.onkeydown = function(event){
//				event对象,只有当用户有操作的时候才会产生
				var event = event || window.event ;
				console.log(event);
//				event.keyCode : 键盘码
//				event.key :  按键名字
		**addEventListener**
var d1 = document.getElementById("can");
d1.addEventListener("click",function(){
				alert("中国")
			},true)
//第一个参数是事件的名称 第二个参数是处理函数 第三个参数为冒泡/捕获   默认为冒泡(false)   捕获(true)

**行为:**当你有操作的时候,所带来的后果点击a链接,后果是跳转页面点击表单中的按钮,后果是提交,清空
阻止冒泡

span.onclick = function(event){
	var event = event || window.event;
	a.style.display = "none";
	event.stopPropagation();//阻止冒泡
	event.cancelBubble = true; // 老版本IE独有      通过事件监听器
}
**`阻止默认行为`**
document.getElementsByTagName("a")[0].onclick = function(event){
				var event = event || window.event;
//				event.preventDefault();//IE9以下不兼容
				return false;
//				event.returnValue = false;//兼容老版本的IE
			}

事件委托就是自己的事情给父元素干

### JavaScript 中的事件冒泡捕获事件委托 #### 事件冒泡 事件冒泡是指当一个事件被触发时,该事件会从最具体的元素(即事件目标)开始,沿着 DOM 树向上传播到文档根节点的过程。例如,如果在子元素上点击,事件会先在子元素上触发,然后依次向父元素传播[^1]。 #### 示例代码 ```javascript document.querySelector('#child').addEventListener('click', () => { console.log('Child clicked'); }); document.querySelector('#parent').addEventListener('click', () => { console.log('Parent clicked'); }); ``` 在这个例子中,点击子元素时,首先会输出 "Child clicked",接着输出 "Parent clicked",这展示了事件冒泡行为[^1]。 #### 事件捕获 事件捕获事件传播的第一阶段,与事件冒泡相反。事件从文档根节点开始,逐级向下传播到事件目标元素。默认情况下,事件处理程序是在冒泡阶段执行的,但可以通过设置 `addEventListener` 的第三个参数为 `true` 来启用捕获阶段[^3]。 #### 示例代码 ```javascript document.querySelector('#parent').addEventListener('click', () => { console.log('Parent captured'); }, true); document.querySelector('#child').addEventListener('click', () => { console.log('Child clicked'); }); ``` 在这个例子中,如果启用了捕获阶段,事件会先在父元素上触发,再传递到子元素[^3]。 #### 事件委托 事件委托是一种利用事件冒泡机制的技术,通过将事件处理程序绑定到父元素上,而不是直接绑定到每个子元素上。这种方法可以减少事件处理程序的数量,并且适用于动态添加的子元素[^4]。 #### 示例代码 ```javascript document.querySelector('#parent').addEventListener('click', (event) => { if (event.target && event.target.matches('#child')) { console.log('Child clicked via delegation'); } }); ``` 在这个例子中,父元素监听了点击事件,并通过检查 `event.target` 来判断是否是子元素触发的事件。 ### 总结 - **事件冒泡**:事件从目标元素向上传播到文档根节点。 - **事件捕获**:事件从文档根节点逐级向下传播到目标元素。 - **事件委托**:利用事件冒泡机制,在父元素上处理子元素的事件。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值