0

トグルを閉じるときに親から「オープン」クラスを削除したいのですが、以下のコードが機能しません。「オープン」クラスを追加しますが、閉じても削除されません。誰が私が間違っているのか見ることができますか?

$('.sub-menu').hide();
$('.toggle').click(function () {
    if (!$(".sub-menu").is(":visible"))
        $(this).addClass("open");

    $(this).next('.sub-menu').slideToggle(function () {
        if (!$(".sub-menu").is(":visible"))
            $(this).parent('.toggle').removeClass("open");
    });

});

更新: 「nav」の HTML は、要求どおりに以下に示します。

<dd class="toggle open">
    <a id="navProducts">Products</a>
</dd>
<div class="sub-menu" style="display: block;">    
   <dd class="sub-menu-option">
     <a id="navBluray" href="nhdadmin/products/bluray">Blu-ray</a>
   </dd>
   <dd class="sub-menu-option">
     <a id="navXbox" href="nhdadmin/products/xbox">Xbox</a>
   </dd>
   <dd class="sub-menu-option">
     <a id="navPlayStation" href="nhdadmin/products/playstation">PlayStation</a>
   </dd>

4

4 に答える 4

2

クリック時に「オープン」クラスを.toggle要素に追加しています。$(this)次に、 (トグル要素)から削除しようとします.parent('.toggle')(トグル要素のクラス「トグル」の親 - 存在しません)。

を削除する.parent('.toggle')と、コードが機能します。

于 2013-08-02T09:19:07.387 に答える
1

これを試して:

$('.toggle').click(function () {
   if (!$(".sub-menu").is(":visible"))
       $(this).addClass("open");

   var currentSlide = $(this);
   $(this).next('.sub-menu').slideToggle(function () {
       if (!$(".sub-menu").is(":visible"))
           currentSlide.removeClass("open");
   });
});
于 2013-08-02T09:20:24.327 に答える
0

これを試して

$(this).parent('.toggle').removeClass("open");

代わりは

$(this).prev('.toggle').removeClass("open");

それが役立つことを願っています

于 2013-08-02T09:29:42.520 に答える