我有像
这样的结构<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');
但没有给出正确的输出 请帮助我
答案 0 :(得分:2)
试试这个:
$($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
答案 1 :(得分:2)
试试这个:
$(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");
});
});
答案 2 :(得分:1)
closest
函数将获得元素的最近父元素。在您的情况下,open
将与您想要的.active
元素相同。
尝试将var a=$(open).closest("li")
更改为var a=$(open)
并查看是否有帮助
答案 3 :(得分:1)
尝试此编码
$("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');
});
答案 4 :(得分:1)
你可以尝试
$('.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');