2

ナビゲーションアイテムの下にドロップダウンを開くこのスクリプトがあります。

現在、ナビゲーションアイテムをクリックすると、ドロップダウンが開きます。同じアイテムをもう一度クリックしても閉じません。

別のナビゲーションアイテムをクリックして別のドロップダウンを開いた場合にのみ、閉じることができます。

他のナビゲーションアイテムがクリックされたときに閉じている機能を維持しながら、クリックしたときに現在のナビゲーションアイテムを閉じるにはどうすればよいですか?

$("li.dropdown-control > a").click( function (event) {
    event.preventDefault()
        $('.dropped').removeClass('dropped');
        var nextSibling = $(this).next();
        nextSibling.toggleClass("dropped");  
});
4

2 に答える 2

2

あなたのコードを見てください:

    $('.dropped').removeClass('dropped');
    var nextSibling = $(this).next();
    nextSibling.toggleClass("dropped");  

これにより、すべてのdroppedクラス(既にドロップされている場合は、クリックしたクラスを含む)が削除され、同じ要素に追加されます。そのため、閉じていないように見えます。実際には、すぐに閉じてから再度開きます。

代わりにこれを試してください:

    var nextSibling = $(this).next();
    nextSibling.toggleClass("dropped");  
    $('.dropped').not(nextSibling).removeClass('dropped');
于 2013-01-24T18:17:56.963 に答える
1

$('.dropped').removeClass('dropped');コードから行を削除して、これを試してください 。toggleClassは、追加されていない場合はクラスを追加し、追加されている場合はクラスを削除することを意味します。

今、削除することでクラス$('.dropped').removeClass('dropped'); toggleClassを削除します.dropped

$("li.dropdown-control > a").click( function (event) {
    event.preventDefault()
        var nextSibling = $(this).next();
        nextSibling.toggleClass("dropped");  
});
于 2013-01-24T18:24:09.393 に答える