dom事件相关

一.dom事件添加方法

  1. 获取元素节点,在元素节点上添加事件(注意:如果同时绑定两个类型一样的事件,则后面是事件会覆盖前面的事件)
let div = document.querySelector("div")
         // 第一种添加点击事件的方式
         div.onclick=function(){
              console.log(1)
         }
//此事件会覆盖上面的点击事件
 div.onclick=function(){
              console.log(2)
         }
  1. 通过事件监听的方法添加(不会存在上面那种方法的覆盖问题)
    语法
element.addEventListener(事件类型, function, 布尔值);

第一个参数是事件的类型 (如 "click" 或 "mousedown").

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

注意:不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。

二.事件代理

利用 事件冒泡 原理,只指定 一个事件处理程序,就可以管理 同一类型 的所有事件。
(将子元素的是时间代理到他们的父元素上面)

方法:获取父元素节点,在父元素上添加子元素要用到的事件,这样父元素下的子元素就会有因为冒泡机制而可以触发事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
         div{
             width: 100px;
             height: 100px;
             background: red;
         }
    </style>
</head>
<body>

    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>

    <script>
        
        // 事件代理: 将我们li的事件代理到他们的父元素上
        var ul = document.querySelector("ul")
        ul.addEventListener("click",function(ev){
             console.log(ev.target.innerHTML)
             console.log(this)
             console.log(ev.currentTarget)
        })

    </script>
</body>
</html>

三.自定义事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>
         111
    </div>
    <script>
        //获取div元素节点
         let div = document.querySelector("div");
         //自定义一个aa事件
         var ev = new Event("aa")
         //在div上添加事件aa
         div.addEventListener('aa',function (ev){
             console.log(ev)
         })
         
         setTimeout(()=>{
             //自定义事件需要用这条语句来派发/触发
                div.dispatchEvent(ev)
         },3000)
    </script>
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,548评论 1 11
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,163评论 0 21
  • 事件流 JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互...
    DHFE阅读 848评论 0 3
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,370评论 0 8
  • 本节介绍各种常见的浏览器事件。 鼠标事件 鼠标事件指与鼠标相关的事件,主要有以下一些。 click 事件,dblc...
    许先生__阅读 2,520评论 0 4