美文网首页
事件对象,事件监听,事件冒泡,事件代理

事件对象,事件监听,事件冒泡,事件代理

作者: 追逐_e6cf | 来源:发表于2018-09-06 20:07 被阅读0次

一、事件对象

document.onclick = function(e){
  e = e || window.event;  //兼容的写法
}

二、冒泡事件:(事件从子元素往父级元素向上触发事件)
处理兼容问题:
主流浏览器:e.stopPropagation()
低版本IE浏览器:e.cancelBubble = true;

var oBox = document.getElementById("box");
document.onclick = function(e){
  e = e || window.event;
  console.log(111);
}
oBox.onclick = function(e){
  e = e || window.event;
  //e.stopPropagation(); //阻止冒泡
  e.cancelBubble = true;
  console.log(222);
}
wrap.onclick = function(){
  console.log(333);
}

三、事件监听
addEventListener(type, function(){}, boolean);

var oBox = document.getElementById("box");
//DOM零级写法
oBox.onclick = function(){
  console.log(123);
}
oBox.onclick = function(){
  console.log(321);
}
//DOM二级写法
oBox.addEventListener("click", function(e){
  e.stopPropagation();
  console.log("盒子被点击了");
});
document.addEventListener("click", function(){
  console.log("文档被点击了");
});

四、事件捕获
addEventListener(type, function(){}, boolean);
事件冒泡:从下往上;
事件捕获:从上往下;
boolean:
true:事件捕获
false:事件冒泡
执行顺序:先进行捕获之后再冒泡

var oBox = document.getElementById("box");
document.addEventListener("click", function(){
  console.log("文档被点击了");
});
wrap.addEventListener("click", function(){
  console.log("wrap也被点击了");
},true);
oBox.addEventListener("click", function(e){
  console.log("盒子被点击了");
},true);

五、事件代理

document.addEventListener("click", function(e){
  console.log(e.target);
  console.log(e.target.tagName);
  if(e.target.tagName === "DIV"){
    console.log("事件源是div");
  }else{
    console.log("事件源不是div");
    e.target.innerHTML = "123";
  }
});

六、清除监听:removeEventListener
DOM零级清除方式:document.onclick = null;

function fn(e){
  console.log(123);
}
document.addEventListener("click", fn);
document.removeEventListener("click", fn);

七、事件监听兼容问题
监听兼容:
addEventListener(type, fn)
attachEvent(type, fn) 注意:此时是"on" + type,只支持事件冒泡,不支持事件捕获

function fn(e){
  e = e || window.event;
  console.log(123);
}
document.attachEvent("onclick", fn);

相关文章

  • 事件对象,事件监听,事件冒泡,事件代理

    一、事件对象 二、冒泡事件:(事件从子元素往父级元素向上触发事件)处理兼容问题:主流浏览器:e.stopPropa...

  • 事件代理原理

    事件代理原理是通过事件冒泡,通过绑定父级对象事件,监听包括父级在内的子级事件,正是依靠事件冒泡原理,子级上事件可以...

  • js事件深入学习

    JavaScript的事件机制包含,事件绑定、事件监听、事件委托(事件代理)等 js中的事件流 ① .冒泡:当下级...

  • 事件

    js里有许多事件下面简单介绍一下 绑定事件 事件对象event 事件对象扩展 事件冒泡 监听器 事件冒泡的阻止 默...

  • zj9 事件

    事件模型、事件冒泡、事件捕获、事件代理、阻止默认事件、事件兼容等 题目1: DOM0 事件和DOM2级在事件监听使...

  • e.target和e.currentTarget区别及使用场景

    指向触发事件监听的对象。 指向添加监听事件的对象 e.target 依靠事件冒泡机制 实现事件委托e.curren...

  • 【事件代理】 动态数据列表里,如何监听每条数据的点击?

    前言 在问题前,需要先清楚关于事件冒泡、事件代理的定义 事件冒泡 事件代理 原理: 事件冒泡机制实现方式:可用ad...

  • 手写通用的事件监听函数

    前言 在问题前,需要先理解事件冒泡、事件代理 可参考文章【事件代理】 动态数据列表里,如何监听每条数据的点击? 具...

  • vue中的事件

    单击事件:@click=" " 事件对象:@click="show($event)" 事件冒泡: 阻止冒泡事件:@...

  • js事件监听 事件冒泡 和css3新增

    事件监听:事件捕获 目标阶段 冒泡阶段 事件冒泡:当使用事件冒泡时,子元素先触发,父级元素后触发。 //阻止事件冒...

网友评论

      本文标题:事件对象,事件监听,事件冒泡,事件代理

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