ビューからは隠されているが、画面をタッチ/クリックすると表示されるナビゲーションメニューを作成しようとしています。
私が見る問題は、画面上の多くの場所をタッチ/クリックすると、ナビゲーションメニューが開き、同時に近くにある可能性のあるボタン、リンクなどでイベントがトリガーされることです。
:not
これまでのところ、 jQuery の句でこれを処理しようとしています。残念ながら、:not
内のどこをクリックしてもトグルが発生するため、句で機能しないものがありますbody
。
HTML:
<div id="NavigationMenu">i'm the navigation menu</div>
<div class="icon-reorder">toggle</div>
<div id="main_content">i'm the main content
<button type="button">button</button>
</div>
JS:
$(document.body).on('click', ['body:not(".btn, a, i, button, input, textarea")', '.icon-reorder'], function(){
console.log('clicked');
$('#NavigationMenu').toggle();
$('#main_content').toggle();
});
$('button').on('click', this, function(){
console.log('button clicked');
});
誰かがこのコードを手伝ってくれるでしょうか? それとも、これはこの問題を解決するための正しい方法ですか? 私には少しハックっぽいように見えます。
このナビゲーション メニューは私のサイトのメイン メニューであるため、煩わしい UI/UX (ナビゲーションが開きすぎたり小さすぎたりする) があると問題が発生します。私は主にタッチ対応のコードに興味がありますが、UI/UX に関するあらゆる提案を歓迎します...