0

jQuery を使用して、ASP.NET マスター ページに垂直メニューを作成しました。考慮すべき項目を次に示します。

  • メニュー構造は順序付きリストに基づいています。リスト項目には、サブメニュー オプションを含むネストされた項目 (UL) があります。
  • ページが読み込まれると、すべてのサブメニューが折りたたまれて表示される必要があります。これは、サブメニュー スタイル ルールに display: none を指定することで簡単に実行できます。ただし、この Web サイトは、Java Script が無効になっている場合でも実行されるはずです。そこで、サブメニュー ルール スタイルを表示するように設定することにしました:ブロックし、$(document).ready(function ()) 中に表示を「none」に戻します。したがって、JavaScript が無効になっている場合、メニューはすべてのサブメニュー項目が展開された状態で表示されます。

問題: 現在、JavaScript が有効になっている場合、すべてのサブメニュー オプションが展開された状態でページが読み込まれ、jQuery の準備完了メソッドが実行された後、サブメニューは次のように折りたたまれます。

$('.menu li > .sub-menu').hide(); 

すべてのサブメニュー項目が既に折りたたまれているページを表示し、ページが読み込まれた後にサブメニュー項目が折りたたまれないようにしたいと考えています。どうすればそれを達成できますか?

ありがとうございました

4

2 に答える 2

0

おそらく、メニューの 2 つのバージョンを持つことができます。おそらく、noscriptタグを使用して、JavaScript 以外のメニュー バージョンをそこに配置することができます。

または、別のオプションとして、メニューの直後にscriptタグを追加することもできます。

$('.menu li > .sub-menu').hide(); 

$(document).ready なし

于 2012-07-08T08:22:01.610 に答える
0

私はちょうど答えを見つけたと思います。あなたが望むのは、それらのサブメニューの CSS を に設定display: none;し、noscript タグで複製サブメニューを作成することです。JS が有効になっている場合、noscript バージョンは表示されず、CSS が原因で他のバージョンも表示されません。JS が無効になっている場合、CSS は JS バージョンで動作しますが、noscript タグが有効になります。

于 2012-07-08T08:23:26.180 に答える