我的垂直导航工作除外,当我按下兄弟姐妹下拉时,之前打开的下拉列表不会崩溃。我想知道你是否可以帮助我。
这是我的javascript代码,如果你想完全看一下这里是jsfiddle链接:http://jsfiddle.net/CLNBn/2/
$('.vertical-nav ul li:has("div")').find('div').hide();
$('.vertical-nav li:has("div")').find('span:first').click(function() {
$(this).parent('li').find('span:first').toggleClass("closed opened");
if ($(this).parent('li').find('span:first').attr('class') == 'closed') {
$(this).parent('li').find('span:first').text('+');
} else {
$(this).parent('li').find('span:first').text('-');
}
$(this).parent('li').find('div:first').slideToggle();
});
答案 0 :(得分:0)
由于您已经为您的元素提供了合理的类,因此这项任务非常简单。你想要的是找到所有span
元素,其中opened
类是当前li
元素的兄弟姐妹的子元素,并触发它们的click
事件处理程序。
这可以通过以下方式完成:
$(this).closest('li').siblings().children('span.opened').click();
我还冒昧地将代码简化为:
$('.vertical-nav li:has("div")').find('span:first').click(function() {
var $this = $(this);
$this.toggleClass("closed opened");
if ($this.hasClass('closed')) {
$this.text('+');
} else {
$this.text('-');
$this.closest('li').siblings().children('span.opened').click();
}
$this.closest('li').find('div').first().slideToggle();
});
正如我在评论中所说,this
已经引用了span
元素,因此无需遍历DOM树并再次搜索它。