事件

作者: 极客传 | 来源:发表于2019-02-06 22:38 被阅读0次

事件捕获:事件从最外层容器,向内传递到目标元素;
事件冒泡:事件从目标元素,向外层传递直到根元素;

事件绑定

  1. HTML 中:
<element onclick="handle()">
  1. JavaScript 中:
object.onclick = function () {
  // SomeJavaScriptCode
};
  1. JavaScript 中:
document.getElementById("button").addEventListener("click", function (event) {
   // SomeJavaScriptCode
  event.stopPropagation();
}, false);
// true - 事件句柄在捕获阶段执行; false- 默认,事件句柄在冒泡阶段执行

需要注意的是,以object.onclick = dealFucntion 这种方式,对同一个目标多次绑定处理函数时,后面的绑定会覆盖前面的绑定;而以 object..addEventListener('click', dealFucntion) 的方式,对同一目标进行多次绑定时,绑定的所有函数都会生效。

移除事件

removeEventListener,移除由 addEventListener() 方法添加的事件。通过 addEventListener() 添加的事件处理程序只能使用removeEventListener() 来移除;移除时传入的参数与添加处理程序时使用的参数相同。通过 addEventListener() 添加的匿名函数无法移除

// 在文档中添加事件句柄
document.addEventListener("mousemove", myFunction);

// 移除文档中的事件句柄
document.removeEventListener("mousemove", myFunction);

阻止事件

event.stopPropagation() 阻止事件的传播,如下,点击 ‘链接’ 时仅打印出 click 链接

<div id="btn_box">
  <a id="btn" href="XXXX">链接</a>
</div>

<script>
 document.getElementById("btn").addEventListener("click", function (event) {
  console.log('click 链接');
  event.stopPropagation();
}, false);

 document.getElementById("btn_box").addEventListener("click", function (event) {
  console.log('click 外层容器');
}, false);
</script>

event.stopPropagation(),终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。
该方法将停止事件的传播,阻止它被分派到其他 Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。

preventDefault() 阻止默认事件,如下,点击 ‘链接’ 时,链接不会被打开,但是会发生冒泡,事件仍会传递到外层的父元素。

<div id="btn_box">
  <a id="btn" href="XXXX">链接</a>
</div>

<script>
 document.getElementById("btn").addEventListener("click", function (event) {
  console.log('click 链接');
  event.preventDefault();
}, false);

 document.getElementById("btn_box").addEventListener("click", function (event) {
  console.log('click 外层容器');
}, false);
</script>

return 语句 同时阻止事件传播和默认事件。

 document.getElementById("btn").addEventListener("click", function (event) {
  console.log('click 链接');
  return false
}, false);

 document.getElementById("btn_box").addEventListener("click", function (event) {
  console.log('click 外层容器');
}, false);

相关文章

  • JavaScript事件01——事件流

    大纲:概念(事件、事件流)事件流模型(事件冒泡、事件捕获、DOM事件流) 一、概念: 1、事件:事件就是用户或浏览...

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

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

  • 事件总结

    DOM事件主要内容 事件流 事件注册 事件对象 事件分类 事件代理 什么是DOM事件? 事件是某个行为或者触发,比...

  • Javascript事件系统

    本文内容 事件基础 事件监听方式 事件默认行为 事件冒泡与事件捕获 事件绑定与事件委托 事件基础 注意:本文不会深...

  • Javascript事件-事件冒泡,事件捕获,事件监听和事件委托

    事件处理机制 (一)DOM事件流 DOM模型是一个树形结构,在DOM模型中,HTML元素是有层次的。当一个HTML...

  • 【事件】事件流

    1、JavaScript和HTML之间的交互通过事件实现的。2、事件流描述的是从页面中接收事件的顺序。3、IE 和...

  • 【事件】事件对象

    触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的额信息。(包括导致事件的元...

  • 【事件】事件类型

    DOM3 级事件规定了以下几类事件: UI(User Interface,用户界面)事件,当用户与页面上的元素交互...

  • 2018-09-10JQuery高级应用

    JQuery事件 window事件 鼠标事件 键盘事件 表单事件 事件注册语法$(对象).type(fn)type...

  • JS事件

    ?事件的相关术语 事件类型: 鼠标事件、键盘事件事件名称: click、dbclick等事件目标: 表示与发生事件...

网友评论

    本文标题:事件

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