首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

事件委托和this

然而,停止传播事件时要小心,因为你不知道是否有其它上层的DOM元素可能需要知道当前事件preventDefault,这个方法会阻止浏览器处理事件的默认行为。...可以给它们共同的祖先元素设置监听处理程序,但是如果共同的祖先元素DOM树中处于较高层次(离根节点比较近),就会监听很多同辈元素的事件,会造成意想不到的结果;当然,也可能存在逻辑或结构原因要分开这两个元素...例如,当设置一个按钮的单击处理程序,this将引用匿名函数内的按钮。 如果函数是一个对象的构造函数,this指向新对象。 如果函数被定义一个对象上,然后调用对象时,this指向该对象。...保持处理程序上下文的一个小技巧是将其设置到闭包内的一个变量,当在上下文改变的地方调用一个函数时,如setTimeout,你仍然可以通过该变量引用需要的对象。...三种方法都被用于调用一个函数,并能指定this的上下文,你可以让代码使用你规定的对象,而不是依靠浏览器去计算出this指向什么。

79030

阻止a标签的默认事件及延伸

看如下实例: (1)把单击事件处理程序注册到一个锚元素,而不是一个外层的上,那么就要面对另外一个问题:当用户单击链接时,浏览器会加载一个新页面。...(2)当用户在编辑完表单后按下回车键时,会触发表单的submit事件,在此事件发生后,表单提交才会真正发生。 这种行为与我们讨论的事件处理程序不是同一个概念,它是单击标签元素的默认操作。...如果我们不希望执行这种默认操作,那么事件对象上调用.stopPropagation()方法也无济于事,因为默认操作不是正常的事件传播流中发生的。...在这种情况下,处理方法有: 1、w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false; preventDefault它是事件对象(Event)的一个方法...//仅仅是HTML事件属性 和 DOM0级事件处理方法中 才能通过返回 return false 的形式组织事件宿主的默认行为。

2.4K60
您找到你想要的搜索结果了吗?
是的
没有找到

js事件防止冒泡

以便訪问事件对象。然后。通过简单地调用event.stopPropagation()就能够避免其它全部DOM元素响应这个事件。这样一来,单击button的事件会被button处理。...默认操作 假设我们把单击事件处理程序注冊到一个锚元素,而不是一个外层的上,那么就要面对另外一个问题:当用户单击链接时。浏览器会载入一个新页面。...在这样的情况下,.preventDefault()方法则能够触发默认操作之前终止事件 。 提示 当在事件的环境中完毕了某些验证之后,一般会用到.preventDefault()。比如。...事件传播和默认操作是相互独立的两套机制,二者不论什么一方发生时,都能够终止还有一方。假设想要同一时候停止事件传播和默认操作,能够事件处理程序中返回false。...这是对事件对象上同一时候调用.stopPropagation()和.preventDefault()的一种简写方式。

2.5K40

什么是单页面应用开发工具_单页面和多页面的区别及优缺点

使用 MPA 使用者浏览 Web 时会依据点击需求切换页面,浏览器会不停的重载页面 (Reload),整个操作也常感觉卡卡。...如果使用这样的设计 Web App 中,使用者体验比较差,整体流畅度扣分。但进入门槛低,简单套个 jQuery 就可以完成。...SPA SPA (Single-page Application) 顾名思义 Web 设计上使用单一页面,利用 JavaScript 操作 Dom 的技术实现各种应用,现今介面上算是非常受欢迎的设计...){ e.preventDefault(); }else{ window.event.returnValue = false; } if (that.mode == 'hash'){ // 判断是...i : 0) + '#' + this.getAttribute("href") ) }else{ // 通过赋值追加 window.location.hash = this.getAttribute(

78830

13事件

独立于设备的输入事件:例如cick事件等,这些事件并没有直接与设备相关 用户界面的相关事件:用户界面事件属于较高级的事件,一般多用于表单中的组件。...特定API事件:这些事件用于特定场景的实现,例如 HTML5中提供的拖放API中的事件等 与错误处理的相关事件 注册事件 注册事件指:就是将 Javascript函数与指定的事件相关联。...用于获取触发当前事件的HTML元素 currentTarget 用于获取当前事件的HTML元素 默认行为 什么是默认行为: 标签跳转功能 元素中点击<input type...Event事件对象preventDefault()方法 link.onclick = function (event) { event.preventDefault(); } return...clientX和clientY 表示鼠标整个可视区域中的位置。 ? screenX和screenY 表示鼠标整个屏幕中的位置。从屏幕(不是浏览器)的左上角开始计算。 ?

75030

怎么创建 JavaScript 自定义事件

你肯定处理过很多的事件监听,比如点击事件或者表单提交。事件监听对许多用例来说很有帮助,但是有时我们需要创建自己的自定义事件处理复杂的交互。...,我们将创建一个双击的事件,只要你短时间内单击一个元素,就会触发该事件。...该事件还会将按钮单击之间的总时间作为自定义数据传递。 首先,我们需要创建一个正常的单击事件监听器来确保是否有双击。...对于我们自定义的事件,我们将所有选项都设置为 true,因为默认情况下,单击事件将所有这些属性设置为 true,而且我们希望双击的行为类似于正常的单击。...总结 自定义事件是 JavaScript 中处理手势和双击事件的好方案,最重要的是,他们非常容易实现和使用。

1.4K10

怎么创建 JavaScript 自定义事件

你肯定处理过很多的事件监听,比如点击事件或者表单提交。事件监听对许多用例来说很有帮助,但是有时我们需要创建自己的自定义事件处理复杂的交互。...在这个例子中,我们将创建一个双击的事件,只要你短时间内单击一个元素,就会触发该事件。...该事件还会将按钮单击之间的总时间作为自定义数据传递。 首先,我们需要创建一个正常的单击事件监听器来确保是否有双击。...对于我们自定义的事件,我们将所有选项都设置为 true,因为默认情况下,单击事件将所有这些属性设置为 true,而且我们希望双击的行为类似于正常的单击。...总结 自定义事件是 JavaScript 中处理手势和双击事件的好方案,最重要的是,他们非常容易实现和使用。 【完】✅

1.3K10

ReactRouter的实现

ReactRouter的实现 ReactRouter是React的核心组件,主要是作为React的路由管理器,保持UI与URL同步,其拥有简单的API与强大的功能例如代码缓冲加载、动态路由匹配、以及建立正确的位置过渡处理等...History Browser History是使用React Router的应用推荐的history,其使用浏览器中的History对象的pushState、replaceState等API以及popstate事件等来处理...通过window.location.hash属性能够读取锚点位置,可以为Hash的改变添加hashchange监听事件,每一次改变Hash,都会在浏览器的访问历史中增加一个记录,此外Hash虽然出现在URL...Router的componentWillMount中,添加了history.listen,其能够监听路由的变化并执行回调事件,在这里即会触发setState。...handleClick中,对没有被preventDefault、鼠标左键点击的、非_blank跳转的、没有按住其他功能键的单击进行preventDefault,然后push进history中,这也是前面讲过的路由的变化与

1.4K10

java表单提交方法_表单提交的几种方式

event : window.event; }, preventDefault: function (event) { if (event.preventDefault) { event.preventDefault...event = EventUtil.getEvent(event); //阻止默认事件 EventUtil.preventDefault(event); }); 调用preventDefault()方法阻止了表单提交...submit事件,因此要记得调用此方法之前先验证表单数字据。...第一次提交表单后,如果长时间没有反映,用户可能会变得不耐烦。这时候,他们也许会反复单击提交按钮。结果往往很麻烦(因为服务器要处理重复请求),或者造成错误(如果是下了订单,那么可能会多定好几份)。...解决这一问题的办法有两个: 第一次提交表单后就禁用提交按钮; 利用onsubmit事件处理程序取消后续的表单提交操作。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

4.9K40

JavaScript面试问题:事件委托和this

点击按钮会导致事件流识别本身在容器下面的文本,每一个元素都接收同样的点击监听代码,由于事件捕获,点击事件会首先触发HTML节点绑定的点击处理程序,然后事件冒泡阶段的末尾返回到最顶层元素。...所有现代浏览器支持preventDefault方法,这个方法会阻止浏览器处理事件的默认行为。一个常见示例就是链接,使用链接执行UI操作是一种常见的做法。...例如,当设置一个按钮的单击处理程序,this将引用匿名函数内的按钮。 ●如果函数是一个对象的构造函数,this指向新对象。 ●如果函数被定义一个对象上,然后调用对象时,this指向该对象。...保持处理程序上下文的一个小技巧是将其设置到闭包内的一个变量,当在上下文改变的地方调用一个函数时,如setTimeout,你仍然可以通过该变量引用需要的对象。...三种方法都被用于调用一个函数,并能指定this的上下文,你可以让代码使用你规定的对象,而不是依靠浏览器去计算出this指向什么。

1.3K50

微前端07 : 对single-spa的路由管理及微应用状态管理的分析

另外,需要注意的是,代码片段1中的代码是文件src/navigation/navigation-events.js中的最外层,并未放到函数中并调用,虽然single-spa是个优秀的开源库,但个人仍然认为这样代码结构不值得学习实际编码中应该予以规避...,二是对该事件对象添加一些标识性质的属性,三是做一些兼容性处理。...至于为什么要这样进行兼容性处理,请阅读源码中指示的相关issues地址。 window.singleSpaNavigate 对应上文流程图中的第4步,有下面这行代码。...) { url = obj.currentTarget.href; obj.preventDefault(); } else { // 省略一些代码......加载阶段,会涉及一个toLoadPromise函数,代码如下: “注:至于toLoadPromise是何时调用,本文暂不分析,在后面会有文章介绍reroute函数的一些主要逻辑的时候会提到,此时只需要该函数会在加载阶段执行即可

1.3K10

javascript禁用链接跳转等默认动作

比如,有一个链接,你要在这个链接跳转前执行一些其他操作,显然,我们能想到给它添加一个单击(onclick)事件,然后执行其他的一些操作,但是你会发现,你所定义的单击事件里的操作并没有执行,而直接进行了页面跳转...这个问题,我们开发中很少遇到,但遇到了也并不难处理。 JavaScript有一个方法,preventDefault(),取消事件的默认动作。... $("a").click(function(event){ event.preventDefault();//禁用默认动作...var url = $(this).attr("href"); window.location.href = url;//执行页面跳转 }) w3school上是这么定义的...例如,如果 type 属性是 "submit",事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。

1.2K20

js 停止事件冒泡 阻止浏览器的默认行为

浏览器默认行为: form中按回车键就会提交表单;单击鼠标右键就会弹出context menu. a标签 1..停止事件冒泡 JavaScript代码 1 //如果提供了事件对象,则这是一个非IE浏览器...return false; } 但是使用return false时必须注意: 1、jQuery有自己的事件处理层,也对处理程序做了封装,如果事件处理程序返回false,事件冒泡和浏览器默认事件都会被阻止...2、使用原生javaScript,事件处理程序中返回false只会阻止浏览器默认行为,而事件冒泡依然存在。 3、浏览器默认行为和事件冒泡是相互独立的。阻止事件冒泡不会影响默认行为,反之亦然。...注意: 有一些浏览器行为是事件处理程序执行前发生的,也就是说这些默认行为是无法取消的,如:大部分浏览器上鼠标移到一个超链接上超链接的样式会发生改变,这个动作是发生在focus事件之前的,是focus...事件处理程序中无法取消的。

5.3K120

「Web编程API」- 03

那么是先执行父元素的单击事件,还是先执行div的单击事件 ???...所以,事件处理函数中声明1个形参用来接收事件对象。 事件对象的兼容性处理 事件对象本身的获取存在兼容问题: 标准浏览器中是浏览器给方法传递的参数,只需要定义形参 e 就可以获取到。...(绑定这个事件处理函数的元素) 。...常情况下terget 和 this是一致的,但有一种情况不同,那就是事件冒泡时(父子元素有相同事件单击子元素,父元素的事件处理函数也会被触发执行),这时候this指向的是父元素,因为它是绑定事件的元素对象...什么是事件委托 把事情委托给别人,代为处理事件委托也称为事件代理, jQuery 里面称为事件委派。 说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码父元素的事件中执行。

1.4K50

移动端点击事件延迟的诞生消亡史

因此,IOS Safari 浏览器首先引入了 300 毫秒延迟,用来判断用户是否会再次点击,也就是说,第一次点击延迟 300 毫秒,300 毫秒后用户没有再次点击则认定为用户进行普通的单击操作,并触发单击...于是,单击事件延迟成为了移动开发者不得不面对的痛。...指针事件 指针事件是 Microsoft 提出的一系列针对 Web 的新事件,现已成为 W3C 规范。指针事件规范是尝试使用单个事件模型统一我们对所有输入类型(鼠标,触摸,手写笔等)的处理。...FastClick 的实现基础建立于 touchstart ,touchmove 或者 touchend 事件中的任意一个调用 event.preventDefault,mouse 事件 以及 click...FastClick 的原理 touchend 阶段调用 event.preventDefault,然后通过 document.createEvent 创建一个自定义事件 MouseEvents,然后通过

2.8K20

事件对象的使用、属性和方法

1 event.target代表当前触发事件的元素,可以通过当前元素对象的一系列属性来判断是不是我们想要的元素 2 target属性可以是注册事件时的元素或者子元素,通常用于比较event.target...和this来确定是不是由于冒泡而触发的,经常用于事件冒泡时处理事件委托 3 事件对象是用来记录一些事件发生时的相关信息的对象。...事件对象只有事件发生时才会产生,并且只能是事件处理函数内部访问,在所有事件处理函数运行结束后,事件对象就被销毁 4 jQuery事件对象的作用 li都有一个共同的父元素,而且所有的事件都是一致的...,鼠标相对于文档的左边缘的位置(左边)与 (顶边)的距离,简单来说是从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化 7 event.preventDefault()阻止默认行为,执行这个方法后...()阻止事件冒泡,为防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数 9 event.which获取鼠标单击时,单击的是鼠标的哪个键 10 event.which

1.5K30

学会一行CSS即可提升页面滚动性能

一般情况下 CSS 并不会影响 JS 事件,但有一个 CSS 属性则比较特殊,那就是 pointer-events,它可以用来规避鼠标事件,其中大部分属性值只适用于 SVG(可缩放矢量图形)操作,而我们只需要关注其...顾名思义,该属性是用于设置触摸屏如何操纵元素区域动作,同样的,touch-action 可以禁用浏览器移动端处理手势的事件,进而提高页面滚动性能,同时它还能解决移动端 点击延迟问题(很多人可能只知道viewport...('xxx').style.touchAction = 'none'// 不需要时还原,例如在抬手事件处理document.addEventListener('touchend', function...touchstart 或 touchmove 事件中用 event.preventDefault() 阻止系统默认事件,不就可以阻止手势操作吗?...,它相当于先声明了元素的可用触摸事件,这样浏览器就不会报错了,preventDefault() 也不会影响到触摸的事件,这两者可以结合来使用。

3.1K30

事件高级

), 表示事件冒泡阶段调用事件处理 程序。...事件对象的使用 事件触发发生时就会产生事件对象,并且系统会以实参的形式传给事件处理函数。 所以,事件处理函数中声明1个形参用来接收事件对象。 ?...常情况下terget 和 this是一致的, 但有一种情况不同,那就是事件冒泡时(父子元素有相同事件单击子元素,父元素的事件处理函数也会被触发执行), 这时候this指向的是父元素,因为它是绑定事件的元素对象...1.8 事件委托 事件冒泡本身的特性,会带来的坏处,也会带来的好处。 什么是事件委托 把事情委托给别人,代为处理事件委托也称为事件代理, jQuery 里面称为事件委派。...说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码父元素的事件中执行。 生活中的代理: 咱们班有100个学生,快递员有100个快递, 如果一个个的送花费时间较长。

1.5K41

前端成神之路-WebAPIs03

03 - Web APIs 学习目标: 能够使用removeChild()方法删除节点 能够完成动态生成表格案例 能够使用传统方式和监听方式给元素注册事件 能够说出事件流执行的三个阶段 能够事件处理函数中获取事件对象...事件对象的使用 事件触发发生时就会产生事件对象,并且系统会以实参的形式传给事件处理函数。 所以,事件处理函数中声明1个形参用来接收事件对象。 ?...常情况下terget 和 this是一致的, 但有一种情况不同,那就是事件冒泡时(父子元素有相同事件单击子元素,父元素的事件处理函数也会被触发执行), 这时候this指向的是父元素,因为它是绑定事件的元素对象...1.3.8 事件委托 事件冒泡本身的特性,会带来的坏处,也会带来的好处。 什么是事件委托 把事情委托给别人,代为处理事件委托也称为事件代理, jQuery 里面称为事件委派。...说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码父元素的事件中执行。 生活中的代理: ? js事件中的代理: ?

2.9K20
领券