セカンダリ メニューを作成するには、マウスを上に動かしてサブメニューを表示したい場合、マウスを外に動かしてサブメニューを非表示にする場合、またはその他の同様のニーズがある場合は、まず、次のような jquery のホバー イベントを使用することを考えます。
$(".nav").hover(function(){ $("sub-nav").addClass("show");},function(){ $("sub-nav").removeClass("show");});
最初の関数はマウスを上に動かすスタイルを実装し、2 番目の関数はマウスを遠ざけるスタイルを実装することで、シンプルなドロップダウン メニュー機能を実現します。
これまで問題なくこれを行ってきましたが、昨日問題が発生しました。要素にすでにこの機能を実装するためのクリック イベントがあり、次にホバー イベントを使用して同じ機能を実装すると、ホバーがクリックに影響します。イベントを削除し、クリックイベント機能を削除します。例:
ナビゲーションの場合、現在クリックされているナビゲーションに現在のスタイルを追加し、マウスが移動する現在の要素に現在のイベントを追加します。このとき、クリックによって追加された現在のスタイルが使用されます。ホバー イベントの影響を受けるため、[スタイルの追加] を再度クリックしても効果はありません。
: hover 疑似クラス
長い間悩んだ後、同僚にアドバイスを求めました。同僚は、hover イベントを使用する必要はないので、疑似クラスを使用することで解決できると言いました。彼女の指導のもとで、それが突然明らかになった。
.nav li.current,.nav li:hover{ //css code }
current は現在必要なスタイルです。その後、:hover を使用して同じスタイルを current と共有するだけで問題を解決できます。同様に、メニュー表示の問題:
.nav:hover .sub-nav{ display:block;}
要約: 常に問題に巻き込まれるのではなく、考え方を変えて問題を解決する最も簡単な方法を見つける必要がある場合があります。