0

ドロップダウンメニューを作成しようとしていますが、別のメニューが表示されたときに、開いている他のすべてのメニューでクラスを削除する必要があります。問題は、以前にクリックしたメニューを2回クリックして、再度開く必要があることです。

$(document).ready(function(){
$('li.dropdown').click(function(){
    //$('.dropdownmenu').hide() ;
    $('.dropdownmenu').not('ul', this).removeClass('opened');
    if($(' ul', this).hasClass('opened'))
    {
        $(' ul', this).removeClass('opened');
        $(' ul', this).hide();
    }
    else
    {
        $(' ul', this).addClass('opened') ;
        $(' ul', this).show() ;
    }

})
})

これはJSFiddleにあります。アイテムのテキストをクリックしてメニューをポップアップ表示します。いくつか開いたり閉じたりすると、問題が明らかになります。私が達成しようとしていることを行うためのより良い方法を知っているなら、私に知らせてください!

そして、はい、あなたが好きならできます:P彼女は私のお気に入りのハハです


また、メニュー項目をもう一度クリックすると、メニューが閉じるはずです。

4

2 に答える 2

1

これを行う必要があるときは、通常、要素を非表示にするのと同じように、クラスを保持する必要があるクラスを気にせずに、すべてからクラスを削除します。

次に、クリックした要素に必要なクラスを追加して表示します。

行う必要がない場合は、次のようにします。

var ul = $(this).closest('ul');

次に、の変数を使用しますnot()

あなたは実際に物事を逆転させています-あなたはliの中のulを探しています、それはそれがあるべきものの反対です。

于 2012-09-14T06:34:32.307 に答える
0

@Arielに感謝します。あなたのアイデアはすぐには機能しませんでしたが、私は機能しました。

var innerul = $('ul'、this);

代わりに、どちらが機能しました。

于 2012-09-14T06:39:59.107 に答える