2

親の中にあるネストされたを選択するのに問題があります。これが私のコードです:ul --> li'sdivul --> li

// Navigation
$(document).ready(function() {

    // Click function

    $(".sidebar ul li a").on("click", function() {
        $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active');
        $(this).parent().siblings().removeClass('open').find("ul.submenu").stop("true", "true").slideUp().removeClass('active');
        $(this).parent().siblings("ul.submenu.ul.li a").removeClass('open'); //<-- This is not working.
    });

    $(".sidebar ul li ul li a").on("click", function() {
        $(this).parent().addClass('open');
        $(this).parent().siblings().removeClass('open');
    });
});

その部分は機能していないとコメントしましたが、残りはすべて正常に機能しています。基本的に、最初の関数は.openクリックしたクラスにクラスを追加しli、子を含むネストされた div を開きます。ul次の行はクラスを削除し、div別のクラスがクリックされた場合は閉じliます。

2 番目のグループは、ul li ul li のオープン クラスの追加と削除を処理します。

問題は、最初のグループの 3 番目の関数にあります。これは、ulli がクリックされたときに、すべての ulliulli からオープン クラスを削除することになっています。

前もって感謝します。

4

1 に答える 1

0

最初に、直接子孫セレクターを使用していないため、ターゲットにしたい要素".sidebar ul li ul li a"が既にターゲットにされているため、2 回目のクリック バインディングは不要であることに注意してください。また、両方の関数で同じアクションを実行しているため、それを取り除くだけです。".sidebar ul li a">

また、Arun が彼の回答でコメントしたように、子孫セレクターの代わりにクラス セレクターを使用していますが、それを修正しても希望する結果が得られるとは思えません。これを行うとうまくいくと思います:

$(".sidebar ul li a").on("click", function() {
    $(".open").not($(this).parents('li')).removeClass('open');
    $(this).parent().addClass('open').find("ul.submenu").stop("true", "true").slideDown().addClass('active');
    $(this).parent().siblings().find("ul.submenu").stop("true", "true").slideUp().removeClass('active');
});
于 2013-08-21T07:56:53.590 に答える