js 事件

作者: sunningcarry | 来源:发表于2017-08-15 20:04 被阅读30次

事件模型

  • DOM0 :原始事件模型
    • btn.onclick=function(){}这种类型的事件模型(btn.onclick = null;)
    • 基于DOM0的事件,对于同一个dom节点而言,只能注册一个, 取后面事件。后边注册的同种事件会覆盖之前注册的。
  • DOM2
    • 冒泡 :事件从事件的发生地(目标元素),一直向上传递,直到window
      • IE只支持事件冒泡
    • 捕获 :事件是从window向下传递,直到事件的发生地(目标元素)
    • 设置捕获和冒泡:
      • IE:默认事件冒泡
      • 标准: addEventListener()第三个参数:捕获/冒泡 = true/false
    • 绑定或者解除事件
      • 标准:addEventListener(type,handler),removeEventListener(type,handler)
      • IE: attachEvent,target.detachEvent("on"+type,handler);
    • 阻止事件冒泡:evt.stopPropagation()/evt.cancelBubble=true
    • 获取事件对象(标准||IE):var event=window.event||event;
    • 获取事件源对象:var target = event.target||event.srcElement;
    • 同一个节点元素,给她添加捕获和冒泡事件模型,捕获比冒泡快
    • 绑定多个事件的顺序:比如说一下子注册了3个冒泡事件,那么执行顺序就按照注册的顺序来,先注册先执行

事件委托

应用场景:动态添加 或删除孩子的时候
含义:孩子的事委托父亲做

<ul id="ul1">
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
</ul>

window.onload = function(){
    var oUl = document.getElementById("ul1");
   oUl.onclick = function(){
        alert(123);
    }
}

这里用父级ul做事件处理,当li被点击时,由于冒泡原理,事件就会冒泡到ul上,因为ul上有点击事件,所以事件就会触发.
当然,这里当点击ul的时候,也是会触发的,那么问题就来了,如果我想让事件代理的效果跟直接给节点的事件效果一样怎么办,比如说只有点击li才会触发,不怕,我们有绝招:

window.onload = function(){
  var oUl = document.getElementById("ul1");
  oUl.onclick = function(event){
    var ev = event || window.event;
    var target = ev.target || ev.srcElement;
    if(target.nodeName.toLowerCase() == 'li'){
         alert(123);
         alert(target.innerHTML);
    }
  }
}

***

相关文章

  • js(事件)

    js 事件js事件.png

  • js操作页面三步骤

    js操作页面三步骤 js事件 鼠标事件 文档事件 键盘事件 表单事件 事件对象 js操作内容 js操作样式 页面转...

  • 事件

    1、鼠标的移入移除js部分 2、鼠标事件js部分 3、事件对象js部分 4、键盘事件js部分 5、输入框事件js部...

  • 20、jQuery 事件机制

    20、jQuery 事件机制 原生js事件与jQuery事件: (1)用原生的js给div注册事件 原生js注册相...

  • javascript 中的事件机制

    js之事件机制 1、事件初探 1.1 js事件的概述 JavaScript事件:JavaScript是基于事件驱动...

  • JavaScript的事件机制详解

    【js事件详解】js事件封装函数,js跨浏览器事件处理机制 一、事件流 事件流描述的是从页面中接受事件的顺序。IE...

  • JS的事件绑定和事件流模型

    一、JS事件 (一)JS事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout...

  • js事件 事件冒泡

    js事件的分类 事件的类型:有鼠标事件,键盘事件,HTML事件,变化事件 注意:js中的事件前面要加on(如:on...

  • JS事件相关基础

    js事件: 键盘事件: JS中的事件冒泡和事件捕获: 1、事件冒泡。如下代码: 点击button事件,连同父元素绑...

  • 2019-01-11 input框事件,jQuery其他事件,自

    js事件的分类事件的类型:有鼠标事件,键盘事件,HTML事件,变化事件注意:js中的事件前面要加on (如:onc...

网友评论

      本文标题:js 事件

      本文链接:https://www.haomeiwen.com/subject/lpdrattx.html