从其他兄弟姐妹中删除 class

Remove class from other siblings

我有这样的结构

<ul>
  <li class="open active">
    <a></a>
    <ul class="submenu nav-show" style="display:block"></ul>
  </li>
  <li class="">
    <a></a>
    <ul></ul>
 </li>
</ul>

当用户点击第二个 li 时,第一个 li's ul 包含 nav-show 将是 nav-hide 并且样式将是 display:hide

到现在我已经试过了

var open = document.querySelectorAll(".open");
var a=$(open).closest("li").addClass('active').siblings().removeClass('active');
$(a).siblings().closest("ul").removeClass('nav-hide').addClass('nav-show');

但是它不起作用 也试过

var open = document.querySelectorAll(".open");
$(open).closest("li").addClass('active').siblings().removeClass('active');
$(open).not(":has(.active)").collapse('hide');

但没有给出正确的输出 请帮助我

closest 函数将获取元素的最近父级。在你的情况下 open 将与你想要 .active 的元素相同。

尝试将 var a=$(open).closest("li") 更改为 var a=$(open),看看是否有帮助

试试这个:

$($p).closest('li').addClass('active').siblings().removeClass('active').end()
.parent().children().filter(function(){return $(this).find('.nav-show ').length>0}).addClass('.nav-hide').hide();

或者

$($p).closest('li').addClass('active').siblings().removeClass('active').end()
.siblings().filter(function(){return $(this).find('.nav-show ').length>0}).addClass('.nav-hide').hide();

试试这个jsfiddle

试试这个编码

$("li > a").click(function() {
        var $div1 = $(this).next();
        $(".submenu").not($div1).hide();
        $div1.show();
        var $div2=$(this).parent();
        $("li").not($div2).removeClass('active');
        $div2.addClass('active');
});

试试这个:

$(document).ready(function(){
    $("li").click(function(){
        $(this).siblings("li.active").find("ul.nav-show:eq(1)").removeClass("nav-show").addClass("nav-hide");
        $(this).siblings("li.active").removeClass("active");
        $(this).addClass("active");
        $(this).find("ul").removeClass("nav-hide").addClass("nav-show");
    });
});

DEMO

你可以试试

$('.open').addClass('active').find('ul').removeClass('nav-hide').addClass('nav-show').end().siblings('.active').removeClass('active').find('ul').addClass('nav-hide').removeClass('nav-show');

同样可以写成

var $li = $('.open').addClass('active');
$li.find('ul').removeClass('nav-hide').addClass('nav-show');
$li.siblings('.active').removeClass('active').find('ul').addClass('nav-hide').removeClass('nav-show');