JS EventListener

这篇博客详细介绍了DOM2级事件,包括如何使用addEventListener添加事件监听、阻止默认事件和事件冒泡,以及removeEventListener移除事件。通过示例代码展示了事件监听的添加和移除,强调了在IE9以下浏览器的兼容性问题。此外,还提醒注意移除事件监听时需要传入相同的函数引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DOM2级事件


可以选择是事件流。可绑定多个同类事件。事件名可以组成字符串。

<!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>
</head>
<body>
  <div id="content"></div>
</body>
</html>

addEventListener

  • 添加监听的事件

    
      let content = document.getElementById("content");
      content.addEventListener("click", function () {
        console.log("seriousLose");
      }, false)
    
      content.addEventListener("click", function () {
        console.log("hello seriousLose");
      }, false)
    
  • 阻止默认事件preventDefault()

    document.body.addEventListener('touchmove', function (event) {
        event.preventDefault();
    },false);
    
  • 阻止事件冒泡stopPropagation()

    <div id="div"><button id="btn">按钮</button></div>
    
      function showType(event) {
        alert(event.type);
        event.stopPropagation();
      }
    
      function showDiv() {
        alert("div");
      }
      document.getElementById("btn").addEventListener("click", showType);
      document.getElementById("div").addEventListener("click", showDiv);
    

removeEventListener

  • 移出事件

      function add() {
        console.log("I me here seriousLose");
      }
      content.addEventListener("mouseenter", add, false);
      content.removeEventListener("mouseenter", add, false);
    

<aside> 💡 removeEventListener 需要知道你需要移出的是哪个事件处理函数。匿名函数丢弃了自身函数名,是移出不了。

</aside>

 content.addEventListener("click", function () {
    console.log("hello seriousLose");
  }, false)
  
 // 是没有用的,并不能被移出
 content.removeEventListener("click", function () {
    console.log("hello seriousLose");
  }, false), false);

<aside> 💡 IE9以下的IE浏览器不支持 addEventListener()和removeEventListener(),使用 attachEvent()与detachEvent() 代替, 因为IE9以下是不支持事件捕获的,所以也没有第三个参数,第一个事件名称前要加on

</aside>

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.A new tool that blends your everyday work apps into one. It's the all-in-one workspace for you and your teamhttps://serious-lose.notion.site/JS-EventListener-069ed005e76443b4b12a4912f1a12a30

demos/DW-dom.html at main · SeriousLose/demos

EventTarget.addEventListener() - Web API 接口参考 | MDN

EventTarget.removeEventListener - Web API 接口参考 | MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值