JS中事件的绑定和解绑

  • 一、 了解事件
    • 1. 事件的三要素
    • 2. 事件绑定分类
      • 2-1. dem0级 事件
      • 2-2. dom2级 事件
  • 二、 事件的绑定
    • 1. dom0级 事件
    • 2. dom2级 事件(事件监听器)
  • 三、 事件的解绑
    • 1. 解绑 dom0 级事件
    • 2. 解绑 dom2 级事件
  • 三、补充------复杂数据类型的比较

一、 了解事件

事件包括 原生事件 和 自定义事件

1. 事件的三要素

  1. 事件源: 在谁身上绑定事件
  2. 事件类型: 什么事件
    (JS中常见的事件类型)
  3. 事件处理函数: 当行为发生的时候,执行哪一个函数

2. 事件绑定分类

2-1. dem0级 事件

on… 的形式

2-2. dom2级 事件

事件监听

二、 事件的绑定

1. dom0级 事件

语法: 事件源.on事件类型 = 事件处理函数

2. dom2级 事件(事件监听器)

  1. addEventListener()
    标准浏览器使用
    语法: 事件源.addEventListener(‘事件类型’, 事件处理函数)
    至少两个参数
    第三个参数 :
           默认是 false 表示 冒泡 (按照从 目标 到 window 的顺序来执行所有的事件)
           可以选填为 true 表示 捕获 (按照 从 window 到目标 的顺序来执行所有的事件)
    可以同时给 同一个事件类型 绑定多个 事件处理函数
           绑定多个事件处理函数的时候,顺序绑定 顺序执行

  2. attachEvent()
    IE低版本使用
    语法: 事件源.attchEvent(‘on事件类型’, 事件处理函数)
    只有两个参数
    可以同时给 一个事件类型 绑定多个 事件处理函数
           绑定多个事件处理函数的时候,顺序绑定 倒叙执行

三、 事件的解绑

1. 解绑 dom0 级事件

因为在给 dom0级事件 绑定的时候是赋值的形式,所以直接再次给它赋值为 null ,所以就把之前的事件处理函数干掉了

2. 解绑 dom2 级事件

  1. removeEventListener()
    语法: removeEventListener(‘事件类型’, 要解绑的事件处理函数)
    注意: 如果你想 解绑事件,那么在你 绑定事件 的时候,一定要把 函数单独书写
           写成一个 具名函数 的形式,以 函数名 的形式绑定事件处理函数
  2. 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低版本浏览器

三、补充------复杂数据类型的比较

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

JS中事件的绑定和解绑相关推荐

  1. JS事件的绑定和解绑

    /* 事件三要素 1.事件源:在谁的身上绑定事件 2.事件类型:什么事件 3.事件处理函数:当行为发生的时候,执行那一个函数 ==>div.οnclick=function(){} ==> ...

  2. Vue之组件自定义事件的绑定和解绑

    不知道小伙伴们还记不记得在用 Vue 构建 TodoList 案例的博客中,我们有涉及到要从子组件中把数据传递给父组件,当时我用的方法是,让父组件给子组件传递一个函数,然后子组件把要传过来的数据放在那 ...

  3. 11-jQuery的事件绑定和解绑

    [转]11-jQuery的事件绑定和解绑 1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type ( ...

  4. jQuery的事件绑定和解绑

    1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type (String) : 事件类型 data ( ...

  5. 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...

    关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 2020,实「鼠」不易 2021,「牛」转乾坤 风劲潮涌当扬帆,任重道远须奋蹄! 一.前言 2020.12.23 立 ...

  6. 7月个人:Windows和Linux绑定和解绑ARP 了解ARP命令的用途。 掌握ARP命令的使用。...

    Windows和Linux绑定和解绑ARP 了解ARP命令的用途. 掌握ARP命令的使用. ARP地址解析协议是一个重要的TCP/IP协议,可以用于确定对应ip地址的网卡物理地址.也可以使用人工方式输 ...

  7. js中事件捕获和事件冒泡

    全栈工程师开发手册 (作者:栾鹏) js系列教程8-事件操作全解 js中事件捕获和事件冒泡 其实不仅在js中,在面向对象的编程语言中或多或少涉及到这个问题.js编程的事件全解,你可以到我的主页,这里给 ...

  8. vue-企业微信绑定和解绑

    一.企业微信绑定解绑 项目中需要对账号进行企业微信的绑定和解绑 企业微信页面显示: <FormItem label="企业微信:">{{account.wechat}} ...

  9. 安卓案例:绑定和解绑服务

    安卓案例:绑定和解绑服务 一.运行效果 二.实现步骤 1.创建安卓应用BindUnbindService

最新文章

  1. 成功解决 Exception: URL fetch failure on https://s3.amazonaws.com/img-datasets/mnist.npz: None -- [Errno
  2. 项目使用encode_Spring Cloud Security:Oauth2使用入门
  3. java6集合编程题
  4. 最长上升子序列(LIS)长度
  5. sscanf,sscanf_s及其相关用法(字符串格式化为其他类型)
  6. 自己寫的 Loading JS插件
  7. 程序员35岁之后的出路_35岁的程序员走向何方?
  8. es6 core-decorators.js
  9. windows防火墙ntp服务器_NTP教学续集已发送,请你查收!
  10. 10月15日发布?一加7T系列概念图曝光:依旧后置竖排相机模组
  11. 1.4 循环语句 方法
  12. 排序算法--直接插入排序
  13. plsql快捷执行方式_UG编程必备的快捷键,收藏转发!
  14. git 添加远程服务器,远程搭建git服务器新手踩坑
  15. YUV 和 YUV420
  16. TransE算法原理与代码解析(2021-06-22)
  17. Achain 钱包部署
  18. Python 求数字开方
  19. JS对象(对象的创建、属性的增删改查、属性的检测和枚举)
  20. 英雄联盟祖安服务器要维护多久,英雄联盟祖安大区到底有多凶残?手速慢了必然赢不了对面!...

热门文章

  1. 【Mysql数据库】数据库添加索引方式
  2. 张飞硬件设计与开发 学习笔记(第一部 线性稳压电源设计) 含理解,超详细!
  3. Problem D 筛法求素数
  4. Protocol Buffers和JSON相互转换
  5. python 指定证书验证_使用Python验证SSL证书
  6. 9个网站,给不知道去哪找数据的你
  7. 小马哥 ------高仿三星S5刷机 高仿三星G9006系列拆机主板机型图与开机界面图
  8. 股权激励12个经典问题
  9. python按行拆分表格_Python将单元格中的多个值拆分为多行
  10. oracle文件系统挂载点,挂载和取消挂载文件系统概述