お客様からドロップダウンメニューシステムの処理を依頼されました。私はドロップダウンとして機能するメニューを持っていますが、ドロップダウンはホバリングではなく、それらを表示するために「クリック」する必要があります。すべてのクレイジーサブメニューです。メニューの外にクリックしてもCSSドロップダウンメニューを開いたままにするには?
さらに、トップレベルのナビアイテムが閉じていても、公開状態(固定状態)でメニューを保持したいと考えています。私はそれが奇妙な行動だと知っていますが、彼らが望むものです。 1つのトップナップメニュー項目はいつでも開く必要があることに注意してください。 彼らはhrefを表示するためにiframeを使用していますので、現在のところメニューの状態を保存するためのクッキーは必要ありませんが、将来的にはうれしいでしょう;) 私はjavascriptの人ではありませんコードから集めましたが、私は迷っています。私は一度にクリックしてメニューを開くことを扱うためにJSの少し変更することができましたが、一度マウスが消えたらULから外に出ました。
私はこれまでのところ、ここに私のコードを掲載しました:http://jsfiddle.net/9dJ9T/8/
クリックして滞在開くと、彼らはすべての後に「固定解除」されるまで、「固定」するとき、誰もが唯一のディスプレイにメニューを得ることができますか?理想的には、jqueryの.toggleメソッドは良いと思いますが、このメニューシステムには非常に多くのULとLIがあります。それぞれの機能を作成することは想像できません。そのような関数を抽象化してコードを単純化し、関数の巨大なリストに終わらせる方法はありますか?私はJSマスターから学びたいと思っています!
そのコードの_all_は本当に必要ですか?無関係なCSSやJSがたくさんあるので、助けはもっと難しい作業になります。問題を再現するものだけにコードを減らすことはできますか? – David
一般的には、次のようにします。1)CSSベースの ':hover'効果を削除します。 2)メニュー項目にjQuery '.click()'ハンドラを追加して、サブメニューを切り替えます。後者の部分はトップレベルのアイテムにしか当てはまらないので、手動で各イベントをバインドするのはひどいことではありません。しかし、もっとパターンにしたいのであれば、すべてのトップレベルメニュー要素のセレクタを用意するだけで、各サブメニュー要素を識別する方法が必要です。 – David
私は@Davidに同意します。いくつかのサブメニュー項目を使用して、さらに多くのサンプルコードを削除し、1つのメニュー項目だけに抽出する必要があります。それは私たちがあなたを助けやすくなるでしょう。 – flynfish