热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

重新认识vue之事宜阻挠冒泡

冒泡的表现近期用vue做了一个需求,大概是同一个地区,点击差别位置有差别的相应函数,另有个总的相应函数,好吧,以下图所示:他们的DOM构造以下:
冒泡的表现

近期用vue做了一个需求,大概是同一个地区,点击差别位置有差别的相应函数,另有个总的相应函数,好吧,以下图所示:

《重新认识vue之事宜阻挠冒泡》

他们的DOM构造以下:







冒泡在这里的表现就是当用户点击图中事宜1或事宜2地区时,事宜3也会实行。这是由于时刻冒泡机制,致使点击’handleClick1’时’handleClick3′ 也会相应。在大部分的时刻这都是不愿望的, 一样我这里也不愿望。
看下冒泡的典范形貌吧照样
《重新认识vue之事宜阻挠冒泡》
图中4,5,6,7步骤就是冒泡阶段。

2018.09.26更新

之前做法太傻了,用一下事宜托付就好了嘛!用事宜托付。

通用处理办法

事宜冒泡了嘛,那就阻挠事宜冒泡呗。 鉴于差别浏览器阻挠事宜冒泡要领不一样,发起手写一个事宜阻挠冒泡要领.

function stopPropagation(event){
var e=arguments.callee.caller.arguments[0] || event;//这里是由于除了IE有event其他浏览器没有所以要做兼容
if(window.event){ //这是IE浏览器
e.cancelBubble=true;
}else if(e && e.stopPropagation){ //这是其他浏览器
e.stopPropagation();//阻挠冒泡事宜
}
}
// 运用
vue中处理办法

上述兼容要领,针对 event 和 住手冒泡要领均做了兼容。 但是在vue中须要在内联语句处置惩罚器中接见原始的 DOM 事宜。能够用特别变量 $event 把它传入要领。如:


// ...
methods: {
warn: function (message, event) {
// 如今我们能够接见原生事宜对象
if (event) event.preventDefault()
alert(message)
}
}

因而这里我们能够简化一下上述住手冒泡要领:

function stopPropagation(event) {
if(event) {
event.stopPropagation ? event.stopPropagation(): event.cancelBubble = true;
}
}
evnet 为 $event

vue中处置惩罚冒泡规范姿态

事宜修饰符

Vue.js 为 v-on 供应了事宜修饰符,修饰符是由点开首的指令后缀来示意的。这些事宜修饰符主要有以下几个:

  • stop
  • prevent
  • capture
  • prevent
  • self
  • once
  • passive

看到没有,第一个’stop’就是我们想要的!
这些修饰符恰是为了处理这些题目而生的。也就说我们只须要在模板中如许写就搞定住手冒泡了。







很圆满有无,这就不用在事宜相应逻辑中去处置惩罚dom事宜细节了。
除 冒泡以外,vue供应的修饰符另有这些功用。











...



...

推荐阅读
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
  • 小程序获取用户信息按钮返回中文地址
    1.我是根据官方文档中描述去写的按钮 可以看到button中加了zh_CNopen-typegetUserInfobindgetuserinfogetU ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文涉及源码版本为2.6.9准备工作down一份Vue源码,从package.json入手,找我们需要的代码1、package.json中的scripts,build:nodesc ... [详细]
  • 最近百度了好几种方式都没有效果针对这种a标签直接open的方式我也是醉了 因为要对这个导出文件大小进行限制,当文件大于100mb的时候,就会有提示并且不让下载对于这种前端计算是很难 ... [详细]
  • 关于学extjs已经了解基本了的信息
    本文目录一览:1、学习extJS之前,应该具备什么基础 ... [详细]
  • 本文介绍了lintcode(12)题目的要求和解题思路,以及给出了相应的代码实现。题目要求在给定的字符串source中找到包括所有目标字符串字母的最短子串,并且时间复杂度为O(n)。解题思路是使用滑动窗口的方法,通过维护一个unordered_map来记录目标字符串中每个字符的出现次数,并使用双指针来寻找最小子串。代码实现部分给出了具体的实现代码。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
author-avatar
殇猿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有