-1

jquery アコーディオンを作成していますが、いくつか問題があります。

私のjQueryはクラス内でulを検索し、特定のクラスがある場合はスライドダウンしますが、要素ulがnav全体に存在する回数だけスライドダウンします

これまでの私のjqueryコードは次のとおりです。

if($(this).has("ul").length){   
$(".menu ul li").on('click',function(e){
    $(this).addClass('open').siblings().removeClass('open').children();
    $('.menu ul li ul').slideUp();
    if($(this).parents().find(".open").length){
        $(this).children('ul').slideDown();
    }
    //$(this).parents().find(".open").children('ul').slideDown();
    e.preventDefault();
    }); 
};

これは私のhtmlです:

  <div class="menu">
    <a id="jump" href="#"><p>Menu</p><span class="right">&#9660;</span></a>
    <nav class="row">
        <div class="page_wrapper">
        <ul class="niveau_1">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#">Group</a>
                <ul class="sub-menu">
                    <li><a href="#">QHSE/Awards</a></li>
                    <li><a href="#">Vacatures/</a></li>
                </ul>
            </li>
            <li><a href="#">Nieuws &amp; Media</a>
                <ul class="sub-menu">
                    <li><a href="#">Van Moer in de media</a></li>
                    <li><a href="#">Nieuwsarchief</a></li>
                </ul>
            </li>
            <li><a href="#">Sport &amp; Events</a>
                <ul class="sub-menu">
                    <li><a href="#">Casual Friday</a>
                        <ul>
                            <li><a href="#">Inschrijving</a></li>
                            <li><a href="#">Foto's</a></li>
                        </ul>
                    </li>
                    <li><a href="#">Thursday Lounge</a></li>
                    <li><a href="#">Triatlon</a></li>
                    <li><a href="#">Sponsoring</a></li>
                    <li><a href="#">Beurzen</a></li>
                    <li><a href="#">Kalender</a></li>
                </ul>
            </li>
            <li><a href="#">Vestigingen</a></li>
            <li><a href="#">Contact</a></li>
        </ul>
        </div>
4

1 に答える 1

0

見るHTMLも持っていないので推測するだけです...あなたの問題はここにありますparents()

一致する要素の現在のセット内の各要素の祖先を取得します。オプションでセレクターによってフィルター処理されます。

ここにparent()が必要だと思います

一致する要素の現在のセット内の各要素の親を取得します。オプションでセレクターによってフィルター処理されます。

if($(this).parent().find(".open").length){  //try this
    $(this).children('ul').slideDown();
}

注: HTML も提供していただければ簡単です

于 2013-02-05T08:50:43.893 に答える