5

有谁知道为什么在 touchstart 事件期间会触发 touchend 事件?这只会发生第二次。

一个快速的代码片段:

function touchstart (event) {
    $(event.target).one('touchend', function () {
        alert('fired');
    }
}

所以第一次被解雇它工作正常。第二次它在 touchstart 上触发警报。

http://jsfiddle.net/8SVFR/

编辑:

看起来这可能只是一个 iPhone 问题

4

2 回答 2

5

结果...通过在 touchend 事件中触发警报会导致各种问题。当您单击“确定”时,它会触发 touchstart,以便在您下次触摸元素时触发 touchend。幸运的是,我使用警报来检查我的代码 - 所以一旦删除,我的代码就可以完美运行!

于 2012-12-30T21:49:00.683 回答
1

只需将“touchend”处理程序的代码放在 setTimeout 中,时间为 0ms。像这样:

$(someElement).on("touchend",
function(){
    setTimeout(function(){
    /*Your code*/
    }, 0);
});
于 2013-10-22T12:47:36.193 回答