JS中事件的绑定和解绑
一、 了解事件
事件包括 原生事件 和 自定义事件
1. 事件的三要素
- 事件源: 在谁身上绑定事件
- 事件类型: 什么事件
(JS中常见的事件类型) - 事件处理函数: 当行为发生的时候,执行哪一个函数

2. 事件绑定分类
2-1. dem0级 事件
on… 的形式
2-2. dom2级 事件
事件监听
二、 事件的绑定
1. dom0级 事件
语法: 事件源.on事件类型 = 事件处理函数
2. dom2级 事件(事件监听器)
-
addEventListener()
标准浏览器使用
语法: 事件源.addEventListener(‘事件类型’, 事件处理函数)
至少两个参数
第三个参数 :
默认是 false 表示 冒泡 (按照从 目标 到 window 的顺序来执行所有的事件)
可以选填为 true 表示 捕获 (按照 从 window 到目标 的顺序来执行所有的事件)
可以同时给 同一个事件类型 绑定多个 事件处理函数
绑定多个事件处理函数的时候,顺序绑定 顺序执行 -
attachEvent()
IE低版本使用
语法: 事件源.attchEvent(‘on事件类型’, 事件处理函数)
只有两个参数
可以同时给 一个事件类型 绑定多个 事件处理函数
绑定多个事件处理函数的时候,顺序绑定 倒叙执行
三、 事件的解绑
1. 解绑 dom0 级事件
因为在给 dom0级事件 绑定的时候是赋值的形式,所以直接再次给它赋值为 null ,所以就把之前的事件处理函数干掉了
2. 解绑 dom2 级事件
- removeEventListener()
语法: removeEventListener(‘事件类型’, 要解绑的事件处理函数)
注意: 如果你想 解绑事件,那么在你 绑定事件 的时候,一定要把 函数单独书写
写成一个 具名函数 的形式,以 函数名 的形式绑定事件处理函数 - detachEvent()
语法: detachEvent(‘on事件类型’, 要解绑的事件处理函数)
注意: 如果你想 解绑事件,那么在你 绑定事件 的时候,一定要把 函数单独书写
写成一个 具名函数 的形式,以 函数名 的形式绑定事件处理函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 100px;
height: 100px;
/*IE低版本这个属性用不了*/
/* background-image: linear-gradient(to right, orange, red); */
/*IE低版本*/
background-color: blue;
}
.btn {
width: 100px;
height: 40px;
font-size: 20px;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
<button class="btn" id="btn">解绑事件</button>
<script>
//获取元素
var box = document.querySelector('.box')
var btn = document.querySelector('.btn')
// 1. dom0级 事件
//绑定
box.onclick = function () {
box.style.left = 50 + 'px'
}
//解绑
box.onclick = null
// 2. dom2级 事件
//标准浏览器
// 提前准备号事件处理函数
function fn() {
console.log('绑定事件')
}
//绑定
box.addEventListener('click', fn)
//解绑
btn.onclick = function () {
box.removeEventListener('click', fn)
console.log('我执行了')
}
//IE低版本
var box = document.getElementById('box')
var btn = document.getElementById('btn')
//绑定
box.attachEvent('onclick', fn)
//解绑
btn.onclick = function () {
box.detachEvent('onclick', fn)
console.log('我执行了')
}
</script>
</body>
</html>
标准浏览器

IE低版本浏览器

三、补充------复杂数据类型的比较
复杂数据类型 在比较的时候,是进行地址的比较
复杂数据类型的变量 存储的就是一个在 堆 里面的地址

本文详细介绍了JavaScript中的事件绑定和解绑,包括DOM0级和DOM2级事件的处理。讲解了事件的三要素:事件源、事件类型和事件处理函数,并通过实例展示了如何使用addEventListener和attachEvent进行事件绑定及解除。此外,还强调了解绑事件时需要确保事件处理函数为具名函数,以便于通过函数名进行解除。
2819

被折叠的 条评论
为什么被折叠?



