点击“点击我”,会依次弹出:最里层---->中间层---->最外层---->然后跳转链接,这就是事件冒泡,下面来看看如何解决这个问题
DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。
当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表现,但事件确实传递了。 事件冒泡的原因是事件源本身可能没有处理事件的能力,即处理事件的函数并未绑定在该事件源上。它本身并不能处理事件,所以需要将事件传播出去,从而能达到处理该事件的执行函数。
本文首发于前端面试总结@知乎专栏,各位可以通过点击文章下方的阅读原来来访问原文地址 问题一览 mouseover和mouseenter两个事件有什么区别? 移动端的click事件行为与PC端有什么不
当触发我们的事件函数时,事件函数其实会接收到一个event对象,该对象上的stopPropagation()可以阻止事件冒泡。
1、如果只是事件函数的调用,函数名称后面不要添加括号 好处:函数执行时,第一个形式参数会被系统自动注入 一个事件对象,提供给函数使用
什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。 (摘自网络) 如何来阻止Jquery事件冒泡? 通过一个小例子来解释 <%@ Page Language="C#" AutoEventW
在事件的捕捉中可以使用 bind 以及 catch,下面以简单的实例给大家展示一下事件冒泡
这还要从遥远的荒诞说起,两家网景和ie,为了能争夺市场,互相使用相反的技术,当网景使用事件传播的时候,ie使用事件冒泡。(两个正好相反)这个时候w3c来了,为了能规范规定,直接取折中,当事件发生时,先发生向下传播,当到底了以后再次使用事件冒泡,逐渐的冒泡到顶层window
事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流
addEventListener() 方法可以指定 "useCapture" 参数来设置传递类型:
好了,下一步就是设置.pop_con隐藏,设置display:none,然后编写jquery,设置点击按钮#btn ,触发click()事件的时候,设置.pop_con使用fateIn()显示。
eventTarget . addEventListener (type, listener[, useCapture] )
我们知道,例如,百度,这是html最基本的东西,的作用是点击链接百度上http://www.baidu.com,这是属于标签的默认行为。
在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。
给元素添加事件,称为注册事件或者绑定事件。 注册事件有两种方式:传统方式和方法监听注册方式
原文标题:Javascript - Event order 原文链接:https://www.quirksmode.org/js/events_order.html Netscape 4 只支持事件捕获,Explorer只支持事件冒泡。Netscape 6和 Konqueror冒泡和捕获均支持,但Opera 和iCab冒泡和捕获均不支持。 在介绍事件的那篇文章(文章链接:https://www.quirksmode.org/js/introevents.html)中,我提了个看起来比较难以理解的问题:“
空类型:undefined null 值类型:基本数据类型 String Number Boolean 引用型:复杂数据类型 Object Array 对象
有意思的是,当时不同的开发团队对于事件流提出了完全相反的概念,主要分为IE事件流——冒泡,Netscape Communicator事件流——捕获。
实现的方法很多,除了使用循环(for,while,forEach等)外,最简单的是使用Array.from
-----', event); }, btn3Click(abc, event) { console.log('++++++++', abc, event); } } })
重点:捕获阶段,事件依次传递的顺序是:window --> document --> html--> body --> 父元素、子元素、目标元素。
事件是可以被 JavaScript 侦测到的行为。 鼠标点击、鼠标移动、鼠标滚动、按下键盘,浏览器窗口大小的改变,网页加载完成,关闭网页等等都会发生事件。
事件代理(Event Delegation),又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。
事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
上一章节,讲解了v-on监听事件的基本用法,那么本章节来介绍一下事件修饰符,主要用来解决「阻止冒泡」、「阻止默认事件」等等情况。
当父子元素中都有点击事件的时候,为了让触发子元素中的事件时,不去触发父元素中的事件,可以在子元素事件中添加stop来阻止事件冒泡。
考核内容: 事件委托:它还有一个名字叫事件代理,事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
我们都知道JavaScript是一门事件驱动的语言,想要进一步深入了解JavaScript我们就要搞明白其中的事件机制。
Vue.js 事件修饰符 .stop 用于阻止事件继续传播,即阻止事件冒泡。这在处理父子组件之间的事件通信时特别有用,可以防止事件从子组件冒泡到父组件,或者在一个元素上绑定多个事件处理函数时,阻止后续事件处理函数的执行。
react 自己实现了一套事件冒泡机制,将所有事件都用代理的方式绑定到 document上。这里谈下我对 react 的冒泡实现的理解,不对的请指出。
DOM 事件模型包括捕获和冒泡,捕获是从上往下到达目标元素,冒泡是从当前元素,也就是目标元素往上到 window
原文地址:https://dev.to/bhagatparwinder/events-event-handling-f28
熟悉了 Vue 的指令系统后,在实际开发中,不可避免的会使用到对于事件的操作,如何处理 DOM 事件流,成为我们必须要掌握的技能。不同于传统的前端开发,在 Vue 中给我们提供了事件修饰符这一利器,使我们可以便捷的处理 DOM 事件,本章,一起来学习如何使用事件修饰符来实现对于 DOM 事件流的操作。
Chain of Responsibility(职责链模式)属于行为型模式。行为型模式不仅描述对象或类的模式,还描述它们之间的通信模式,比如对操作的处理应该如何传递等等。
javascript 给 DOM 绑定事件处理函数总的来说有2种方式:在 html 文档中绑定、在 js 代码中绑定。下面的方式1、方式2属于在 html 中绑定事件,方式3、方式4和方式5属于在js代码中绑定事件,其中,方式4和5属于事件监听,而方式5是最推荐的做法。
事件流 这一概念源自于对事件触发对象的思考。例如常见的点击事件,鼠标移动事件。这些事件发生之时,往往不只是点击或者移动到某一特定元素上。 比如点击某一个按钮,而它是由上一层的父标签,或许在上一层还有父标签甚至是整个页面。因此点击一个元素可以看成是同时点击了父标签或者整个页面。那么此时事件应该怎么响应到指定标签呢? 事件冒泡 即事件从指定元素开始传播到最外层的元素,并且该事件不仅会在指定元素上发生,还会在传播过过程中的每一个元素上发生。 <html> <body> 02
如果你点击了页面中的 li 标签,那么这个click事件会按照如下 (1)li (2)ul (3)body (4)html (5)document 也就是说click事件首先在 li 元素上触发, 而这个元素就是我们点击的元素,然后点击事件沿着DOM树向上传播 在每一个节点上触发,直到传播到document对象 我自己画了一个事件冒泡的示意图如下
我们会看到这样的情况:span alert -> td alert -> table alert。这就叫事件冒泡。就是从下到上,从里到外,事件依次触发。 有的时候我们不希望事件冒泡咋办?
语法: element.addEventListener( type , listener , useCapture ) – – 添加事件监听 – – type: 事件类型字符串,不使用“on”前缀 – – callback:事件处理程序(回调函数) – – useCapture:可选参数,是否使用事件捕获的方式处理事件。不传递时,默认为false,表示不使用事件捕获(使用事件冒泡),如果需要显示事件捕获,则显示传递true。
Bootstrap,Foundation,Semantic UI,Angular,React Redux,Vue?
事件冒泡:当有多个元素嵌套,并且这些元素绑定了相同的事件,这时候如果里面的元素事件触发了,那么外面的事件会自动触发。
在项目开发中,经常遇到绑定事件不起作用,或者事件绑定多次,导致重复触发。 1.事件绑定的几种常见方式(以click事件为例) jquery: $(selector).click(function(){...}) $(selector).bind("click",function(){...}) $(selector).live("click",function(){...}) $(document).delegate("selector","click",function(){...}) $(sel
某些网站例如某度文库、道客某某等都不允许用户选中文本进行复制,作为一个搞前端的,就感觉离谱,文本都下载到本地了,还不让我复制,于是为了更好的学(复)习(制),实现了一个脚本去解决这些限制。
之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理。翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个”on”方法来实现的。jQuery on()方法是官方推荐的绑定事件的一个方法 基本用法:.on( events ,[ selector ] ,[ data ] ) 最常见的给元素绑定一个点击事件,对比一下快捷方式与on方式的不同
HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。
eventTarget.addEventListener()方法将指定的监听器注册到 eventTarget(目标对象)上,当该对象触发指定的事件时,就会执行事件处理函数。
案例如上图:点文档关闭菜单,点按钮打开菜单。因为按钮在文档内,所以会产生事件冒泡使得在点按钮打开菜单时无法正常执行。所以我们需要阻止事件冒泡。例子代码如下: <!doctype html> <html> <head> <style> .box{width:200px;height:200px;background-color:green;} span{display:block;width:100px;height:30px;background-color:skyblue;} </style> <scr
事件冒泡:当一个元素触发某个事件的时候,会把这个事件传播到其父元素,一直到顶层元素。
领取专属 10元无门槛券
手把手带您无忧上云