用vue解决@touchend和@click在一个标签上共存的问题
时间: 2024-05-04 19:20:20 浏览: 173
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
在 Vue 中,@click 会监听鼠标点击事件,而 @touchend 监听触摸屏幕结束事件。如果同时在一个标签上使用这两个事件,可能会出现冲突,导致点击事件无法触发。
为了解决这个问题,可以在标签上添加一个 `v-on:touchstart.passive`,这样就可以保证在触摸屏幕时不会阻止默认行为,从而解决冲突问题。具体代码如下:
```html
<button @click="onClick" @touchend="onClick" v-on:touchstart.passive>点击我</button>
```
其中,`v-on:touchstart.passive` 可以理解为在触摸屏幕开始时添加一个监听事件,并且在事件处理函数中使用 `event.preventDefault()` 防止冒泡。
另外,为了避免在移动端出现点击延迟的问题,可以使用 `fastclick` 或者 `v-tap` 等第三方库来解决。
阅读全文