vue @click @tap重叠事件区分方式

目录
  • @click @tap重叠事件区分
  • click和tap事件的区别
    • click事件
    • tap事件
    • 点透问题

@click @tap重叠事件区分

点击remove事件会触发details事件,使用@click.stop

官方介绍

<ul>
    <li v-for="item in data.list" :key="item.id" @click="details(item)">
        <font @click.stop="edit(item)">编辑</font>
        <font @click.stop="remove(item)">删除</font>
    </li>
</ul>

<ul>
    <li v-for="item in data.list" :key="item.id" @tap="details(item)">
        <font @tap.stop="edit(item)">编辑</font>
        <font @tap.stop="remove(item)">删除</font>
    </li>
</ul>

click和tap事件的区别

click事件

click事件是pc端的单机事件,但是当这个事件在移动端实现的时候,会出现延迟300ms的现象,所以移动端一般用tap来代替click。

tap事件

tap可以减少click在移动端的延迟,提高了性能。

点透问题

在同一个z轴上,z-index不同的两个元素,上面的元素是一个绑定了tap事件的,下面是一个a标签,一旦tap触发,这个元素就会display: none,而从上面的tap可以看出,有touchstart、touchend,所以会300ms之后触发click事件,而z-index已经消失了,所以,触发了下面的a的click事件,注意: 我们认为a标签默认是绑定了click事件的。而这种现象不是我们所期待的。

使用fastclick来解决移动端输入框聚焦不灵敏问题

在移动端,输入框可能会出现点击后无法输入,需要长按或者连续点击才能获得输入框的聚焦,这时候可以使用fastclick来解决这个问题。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue中touch和click共存的解决方式

    在vue开发手机端项目时,我们经常会遇到touch和click共存的情况,比如城市选择页面的字母滑动 touch事件在手机端会触发浏览器滑动,所以应给touch事件添加阻止默认行为touchmove.prevent.注意阻止默认行为事件不要添加在touchstart事件上,会影响到click事件的发生. touch事件和click事件发生先后顺序: touchstart,touchmove,touchend,click 补充知识:touchstart与click同时触发 产生冲突的原因 我们可以

  • 解决vue的touchStart事件及click事件冲突问题

    一 .问题: 今天遇到这样问题,给某个元素同时绑定touchStart及click事件后,若在移动设备上,当你点击时,会依次出发这两个事件.因为移动端设备上的click事件触发是会延迟300ms,所以touchStart事件会先触发后再触发click事件.这样导致每次都要执行两次,这样毫无意义.这里提醒下,PC是无法识别touch相关事件 二.解决方式 (1)preventDefault方法 通过使用preventDefault方法(阻止元素默认事件行为的发生)来解决.在touchstart中添

  • vue自定义tap指令及tap事件的实现

    1.Vue指令 Vue提供自定义实现指令的功能, 和组件类似,可以是全局指令和局部指令,详细可以参见vue官网自定义指令一节(https://cn.vuejs.org/v2/guide/custom-directive.html). 2.v-tap指令实现 我个人的理解,编写指令即是在vue指令对象提供的钩子函数中做相应的逻辑处理,tap指令是在bind钩子函数中做相应的处理, 首先,要明白的是tap是为了处理click事件在iphone上的存在300ms的延时,这样使得连续点击很不流畅,tap

  • vue @click @tap重叠事件区分方式

    目录 @click @tap重叠事件区分 click和tap事件的区别 click事件 tap事件 点透问题 @click @tap重叠事件区分 点击remove事件会触发details事件,使用@click.stop 官方介绍 <ul>     <li v-for="item in data.list" :key="item.id" @click="details(item)">         <font @cl

  • Vue根据条件添加click事件的方式

    需求:根据特定条件,增加或者去掉click事件(例如:clickFlag == true时,添加click事件:clickFlag == false时,去掉click事件:) 解决方法: 方式一:在绑定事件中直接添加标示量clickFlag <div @click="clickFlag && addGoodsHandler()"> 添加产品 </div> 方式二:用v-if .v-else-if.v-else 判断 <div v-if=&q

  • vue移动端如何解决click事件延迟,封装tap等事件

    目录 移动端解决click事件延迟,封装tap等事件 移动端click事件失效 移动端解决click事件延迟,封装tap等事件 下载vue-touch.js 引入: <script src="js/vue-touch.js" type="text/javascript" charset="utf-8"></script> 导航条tab: <div>                 <ul>    

  • vue click.stop阻止点击事件继续传播的方法

    如下所示: <div id="app"> <div v-on:click="dodo"> <button v-on:click="doThis">阻止单击事件继续传播</button> </div> </div> <script> var app = new Vue({ el: "#app", data: { name: "Vue.j

  • Vue v-for循环之@click点击事件获取元素示例

    应用背景 浏览论坛的贴子(数据库的数据通过vue遍历在html页面上) 点击帖子的标题.图片,可以查看详细的帖子(点击事件获取id) 1.设置一个隐藏值的放置Id的div,点击div就获取id,传参到后台(点击一部分) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <

  • vue.js click点击事件获取当前元素对象的操作

    Vue.js可以传递$event对象 <body id="app"> <ul> <li v-on:click="say('hello!', $event)">点击当前行文本</li> <li>li2</li> <li>li3</li> </ul> <script> new Vue({ el: '#app', data: { message: 'He

  • Vue手动控制点击事件Click触发方式

    目录 手动控制点击事件Click触发 方法一 方法二 Vue点击click事件解析 废话不多说,先上代码 手动控制点击事件Click触发 方法一 变量的值&&触发函数 方法二 利用变量控制css样式设置其pointer-event:none Vue点击click事件解析 Vue算是前端技术比较火的一门技术了,所以在日常开发当中掌握它还是比较重要的,最近要用vue做一个移动端项目,趁着空闲的时间来简单的写一下demo,希望能够帮到大家: 废话不多说,先上代码 <!DOCTYPE htm

  • 详解vue组件通信的三种方式

    1. 第一种方式就是官方推荐的 官方推荐方式 有时候两个组件也需要通信(非父子关系).在简单的场景下,可以使用一个空的 Vue 实例作为中央事件总线. 本质是通过派发事件然后监听事件从而更改值,(父子组件通信也可用这个方式,但是不同的一点就是父子组件通信的时候可以不用一个空的Vue实例来做中转,这种方式我这里就不做演示的了,因为我的题目是非父子通信) 空的Vue实例 bus import Vue from 'vue' const bus = new Vue() export default bu

  • ant design vue中表格指定格式渲染方式

    注意点:定义的columns一定要写在data中,否则在加载过程中由于渲染顺序会导致其中的渲染函数无法识别 渲染方法1: 指定渲染函数: const columns = [ { title: '排名', dataIndex: 'key', customRender: renderContent // 渲染函数的规则 }, { title: '搜索关键词', dataIndex: 'keyword', customRender: (text, row, index) => { if (index

随机推荐