zoukankan      html  css  js  c++  java
  • 事件监听和事件模型

    事件监听

    事件监听就是让计算机等待某个事件的发生,当这个事件发生之后,对其做出一个相应,如等待鼠标单击按钮,单击发生时打开一个新的页面;但是你写的监听事件发现这件事情后,会进行阻止,让其无法跳转。

    事件监听涉及到三个类对象

    1、EventSource(事件源)事件发生的场所

    2、Event(事件):事件封装界面组件上面发生的特定事件

    3、EventListener(事件监听器):负责监听事件源发生的事件

    事件监听用法

    1、当同一个对象使用.onclick的写法触发多个方法的时候,后一个方法会把前一个方法覆盖掉,也就是说,在对象的onclick事件发生时,只会执行最后绑定的方法。而用事件监听则不会有覆盖的现象,每个绑定的事件都会被执行。

    window.onload = function(){ 
     var btn = document.getElementById("yuanEvent"); 
     btn.onclick = function(){ 
      alert("第一个事件"); 
     } 
     btn.onclick = function(){ 
      alert("第二个事件"); 
     } 
     btn.onclick = function(){ 
      alert("第三个事件"); 
     } 
    }
    123456789101112

    2、采用事件监听给对象绑定方法后,可以解除相应的绑定。

    var eventOne = function(){ 
     alert("第一个监听事件"); 
    } 
    function eventTwo(){ 
     alert("第二个监听事件"); 
    } 
    window.onload = function(){ 
     var btn = document.getElementById("yuanEvent"); 
     btn.addEventListener("click",eventOne); 
     btn.addEventListener("click",eventTwo); 
     btn.removeEventListener("click",eventOne); 
    }
    123456789101112
    

    3、解除绑定事件的时候一定要用函数的句柄,把整个函数写上是无法解除绑定的。

    btn.addEventListener("click",eventTwo); 
    btn.removeEventListener("click",eventOne); 
    12

    事件模型

    javascript中有两种事件模型:DOM0,DOM2。
    DOM0级事件模型是早期的事件模型,所有的浏览器都是支持的,而且其实现也是比较简单。

    <p id = 'click'>click me</p>
    <script>
        document.getElementById('click').onclick = function(event){
            alert(event.target);
        }
    </script>
    123456

    这种事件模型就是直接在dom对象上注册事件名称,这段代码就是在p标签上注册了一个onclick事件,在这个事件函数内部输出点击的目标。而解除事件则更加简单,就是将null复制给事件函数,如下:

    document.getElementById('click'_).onclick = null;
    

    由此我们可以知道dom0中,一个dom对象只能注册一个同类型的函数,因为注册多个同类型的函数的话,就会发生覆盖,之前注册的函数就会无效。
    DOM2级事件模型是捕获和冒泡模型,就是一个事件, 要先捕获到, 然后在执行冒泡
    DOM2级的注册事件和解除事件
    在DOM2级中使用addEventListener和removeEventListener来注册和解除事件。这种函数较之之前的方法好处是一个dom对象可以注册多个相同类型的事件,不会发生事件的覆盖,会依次的执行各个事件函数。

  • 相关阅读:
    读《构建之法- 现代软件工程》一书
    自我介绍
    jQuery Validate表单验证
    oracle数据库 expdp/impdp 和 exp/imp
    Java JDK安装及环境配置
    《JavaScript》JS中的跨域问题
    Python语言基础
    .net web 应用程序C#
    C# string 常用方法
    前端获取URL和SESSON中的值
  • 原文地址:https://www.cnblogs.com/swjRH/p/13663934.html
Copyright © 2011-2022 走看看