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");
    });

});

更新:“导航”的 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)(toggle element)中删除.parent('.toggle')(toggle element's parent of class "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 回答
1

尝试

$('.sub-menu').hide();
$('.toggle').click(function () {
    var toggle = $(this);

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

});
于 2013-08-02T09:24:07.497 回答
0

试试这个

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

反而

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

希望它会有所帮助

于 2013-08-02T09:29:42.520 回答