レスポンシブサイトを構築しています。メインナビゲーションには、のサブナビゲーションが表示されhover
ます。タッチスクリーンでは、これをclick
(touchstart
より具体的には)実行します。
デスクトップでは、ユーザーがナビゲーションまたはサブナビゲーションにカーソルを合わせなくなると消えます。タッチスクリーンで同じようなことを実現するために、関数をのtouchstart
イベントにバインドしましたbody
。この関数は、タッチが内の要素で発生したかどうかをチェックしますnav
。そうでない場合は、開いているサブナビゲーションを閉じます。
問題は、ユーザーがスクロールした場合ではなくnav
、ユーザーがの外側をタップした場合にのみこれを発生させたいということです。ユーザーが単にタップするのではなく、スクロールしたかどうかを確認するにはどうすればよいですか?
これまでの機能は次のとおりです。
$('body').bind('touchstart', function(e) {
if($(e.target).closest('nav').length == 0) {
closeAll();
}
});