问题:一个DOM元素同时绑定click、touch、mouse(以mousedown为例)事件时,事件的优先级是怎样的?
首先需要注意的是,pc端没有touch事件,所以在pc端不会响应touchstart、touchmove、touchend事件。在移动端,可以响应touchstart、touchmove、touchend事件。
pc端的事件优先级
mousedown事件→click事件
移动的事件优先级
点击
touchstart→touchend→click
按住之后不松开,并移动,最后松开
touchstart→touchmove→touchend
ps:长按时,并不会响应click事件
测试代码
<template>
<div>
<div
class="click-touch-wrap"
@click="clickEvent()"
@touchstart="touchStart()"
@touchmove="touchMove()"
@touchend="touchEnd()"
@mousedown="mousedown()"
>
测试
</div>
</div>
</template>
<script>
export default {
name: "ClickAndTouch",
methods: {
clickEvent() {
console.log("click 事件");
},
touchStart() {
console.log("touchstart 事件");
},
touchMove() {
console.log("touchmove 事件");
},
touchEnd() {
console.log("touchend 事件");
},
mousedown() {
console.log("mousedown 事件");
},
},
};
</script>
<style scoped>
.click-touch-wrap {
width: 100px;
height: 100px;
border: 1px solid red;
}
</style>