5

touchstart イベント中に touchend イベントが発生する理由を知っている人はいますか? これは 2 回目にのみ発生します。

簡単なコード スニペット:

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

したがって、これが最初に起動されたときは正常に動作します。2回目は、タッチスタートでアラートを発生させます。

http://jsfiddle.net/8SVFR/

編集:

これはiPhoneだけの問題である可能性があります

4

2 に答える 2

5

結局のところ...タッチエンドイベントでアラートが発生すると、あらゆる種類の問題が発生します。[OK]をクリックすると、タッチスタートが起動されるため、次に要素にタッチしたときにタッチエンドが起動します。幸い、アラートを使用してコードをチェックしていたので、これを削除すると、コードは完全に機能しました。

于 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 に答える