jqueryを使用してマルチレベルメニューを作成しています。特定のレベルのボタンをクリックすると、ボタンの色が変わり、クリックされたボタンの次の下位メニュー レベルが表示されます。
たとえば、「ポリシー」をクリックすると、「新しいポリシー」、「ポリシーの更新」、「ポリシーの支持」などが表示される場合があります。
「ポリシー」ボタンはレベル 1 で、他のボタンはレベル 2 です。別のレベル 1 ボタンをクリックすると、クリックされているボタンを除くすべてのボタンのボタン色クラスがオフ (削除) になります。このボタンでは、ボタンの色のクラスを切り替えます (ボタンがクリックされた場合、または 2 回目にクリックされた場合)。
1) レベル 2 のボタンをクリックすると、レベル 1 のボタンのカラー クラスがすべて削除されるという問題が発生します。そこで、さまざまなレベルのボタンに type="level01" と type="level02" を配置したいと思います。(ボタンと呼んでいますが、実際にはアンカータグです。)
これは、現在のボタンのカラー クラス以外をすべて削除するコードです。
// remove the menuA-open class from all class menuA objects except the one being toggled
$(".menuA[name!=" + $(this).text() +"]").removeClass("menuA-open");
ボタンのテキスト (アンカー タグの innerHTML) も name="" パラメータにあることに注意してください。
今、私は次のようなことを言いたいです:
($(".menuA[name!=" + $(this).text() +"]") and $("menu[type]==$(this)[type])).removeClass("menuA-open");
しかし、jqueryでこれら2つの条件を正しく「and」する方法を見つけることができません。
2) $(this) で text() 関数を使用します
$(".menuA[name!=" + $(this).text() +"]").removeClass("menuA-open");
これは、アンカー タグの innerHTML のテキストに小さなグラフィックが追加されているためです。したがって、これはテキストの長さが 19 文字未満の場合は問題なく機能しますが、そこからテストが失敗しますか??
誰でも助けてもらえますか?
クリス