1

レスポンシブサイトを構築しています。メインナビゲーションには、のサブナビゲーションが表示されhoverます。タッチスクリーンでは、これをclicktouchstartより具体的には)実行します。

デスクトップでは、ユーザーがナビゲーションまたはサブナビゲーションにカーソルを合わせなくなると消えます。タッチスクリーンで同じようなことを実現するために、関数をのtouchstartイベントにバインドしましたbody。この関数は、タッチが内の要素で発生したかどうかをチェックしますnav。そうでない場合は、開いているサブナビゲーションを閉じます。

問題は、ユーザーがスクロールした場合ではなくnav、ユーザーがの外側をタップした場合にのみこれを発生させたいということです。ユーザーが単にタップするのではなく、スクロールしたかどうかを確認するにはどうすればよいですか?

これまでの機能は次のとおりです。

$('body').bind('touchstart', function(e) {
    if($(e.target).closest('nav').length == 0) {
        closeAll();
    }
});
4

1 に答える 1

3

タッチスタートでタッチした場所(座標)を検出し、数ミリ秒後にチェックする時間を設定します...タッチポイントが数ピクセル以上移動した場合は、スクロールしています。

編集:タッチスクリーンインターフェースのコーディング中に私が遭遇した他の何かは、click()を使用するときに特定のデバイスに最大300msの遅延が組み込まれていることです。まだ行っていない場合は、これをオーバーライドできます。

于 2012-09-21T09:52:00.347 に答える