最近突发奇想,要是在同一个元素上同时绑定不同的点击事件(同一时刻触发),此时就有必要明确同一次点击事件时各个事件的触发顺序,这边先从简单的尝试起
事件选取
这里我们选取的单击事件一共是5种:touchstart , touchend , onmousedown , onmouseup , click
因为 click 有 300 毫秒延迟的问题,所以最主要就是比较 touchstart 和 onmouseup 的优先级顺序,测试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var count = 1; var oDom = document.getElementById('oDiv'); oDom.addEventListener('click', function () { console.log("click 事件位于第: " + count++ + "顺序触发"); }, false); oDom.addEventListener('touchstart', function () { console.log("touchstart 事件位于第: " + count++ + "顺序触发"); }, false); oDom.addEventListener('touchend', function () { console.log("touchend 事件位于第: " + count++ + "顺序触发"); }, false); oDom.addEventListener('mousedown', function () { console.log("mousedown 事件位于第: " + count++ + "顺序触发"); }, false); oDom.addEventListener('mouseup', function () { console.log("mouseup 事件位于第: " + count++ + "顺序触发"); }, false);
|
结果 :
所以事件触发的顺序是:
touchstart -> touchend -> mousedown -> mouseup -> click