zoukankan      html  css  js  c++  java
  • JS事件监听的添加方法

    一、
    我们一般在的事件添加时是这样做的:
    elm.onclick = function( ) { //handler } 这样的写法兼容主流的浏览器,但是存在一个问题,当同一个elm绑定多个事件时,只有最后一个事件会被添加
    如:elm.onclick = handler1;
           elm.onclick = handler2;
           elm.onclick = hander3;
    只有handler3会被添加执行,所以我们使用另外一种方法添加事件;
     
    二、
    IE:attachEvent
          elm.attachEvent("onclick",handler1);
          elm.attachEvent("onclick",handler2);
          elm.attachEvent("onclick",handler3);
          三个方法执行的顺序是3 - 2  -1;
    标准:addEventListener( ):
         elm.addEventListener( "click",handler1,false );
         elm.addEventListener( "click",handler2,false );
         elm.addEventListener( "click",handler3,false );
    执行的顺序:1 - 2 - 3 
    该方法的第三个参数是泡沫获取,是一个布尔值:当为false时表示由里向外,true表示由外向里:
     
    <div id="id1" >
          <div id="id2"></div>
    </div>
     
    document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, false); 
    document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, false);
    // 点击div2 div2 - div1
     
    document.getElementById('id1').addEventListener('click', function() { console.log('id1');}, false);
    document.getElementById('id2').addEventListener('click', function() { console.log('id2');}, true);
       // 点击div2 div1 - div2
     
    三、
     
          
    DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数。 这两个方法都需要三个参数,分别为:
    
    事件名称(String)、要触发的事件处理函数(Function)、指定事件处理函数的时期或阶段(boolean)。
    
    DOM事件流如图(剪自javascript高级程序设计):
    
    
    
    由图可知捕获过程要先于冒泡过程
    
    当第三个参数设置为true就在捕获过程中执行,反之就在冒泡过程中执行处理函数。
    四、通用的事件添加方法:
      1、
      on:function(elm,type,handler)
      {
        // 添加事件
        return elm.attachEvent ? elm.attachEvent("on"+type,handler) : elm.addEventListener(type,handler,false);
      }
  • 相关阅读:
    三角函数都快忘光了
    Windows 10 LTSC 2019(1809) WSL 安装 CentOS 7
    随手写了个京东发票助手
    ASP 封装基本身份认证( HTTP Basic Authenticate)辅助类
    WebBrowser中打开新页面
    将QT窗口嵌入到WinForm窗口
    [摘录]如何按需前端显示指定的窗口
    实现TabControl 选项卡首个标签缩进的方法
    玩转时间操作
    Java 并发包中的高级同步工具
  • 原文地址:https://www.cnblogs.com/jerrypro/p/6633703.html
Copyright © 2011-2022 走看看