这里非常简单的问题,但它一直困扰着我。
我的手风琴菜单设置如下:
<ul id="menu" class="navigation">
<li><a href="#"><span>Dashboard</span></a>
<ul>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Articles & Posts</a></li>
<li><a href="#">Pages</a></li>
</ul>
</li>
<li><a href="#"><span class="icon_articles">Articles & Posts</span></a>
<ul>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Articles & Posts</a></li>
<li><a href="#">Pages</a></li>
</ul>
</li>
<li><a href="#"><span class="icon_pages">Pages</span></a></li>
<li><a href="#"><span class="icon_media">Media Gallery</span></a>
<ul>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Articles & Posts</a></li>
<li><a href="#">Pages</a></li>
</ul>
</li>
<li><a href="#"><span class="icon_calendar">Calendar</span></a></li>
<li><a href="#"><span class="icon_demos">Features & Demos</span></a>
<ul>
<li><a href="#">Dashboard</a></li>
<li><a href="#">Articles & Posts</a></li>
<li><a href="#">Pages</a></li>
</ul>
</li>
<li><a href="#"><span class="icon_settings">Settings</span></a></li>
<li><a href="#"><span class="icon_logout">Logout</span></a></li>
</ul>
我有一个运行手风琴的jQuery脚本:
function accordionMenu() {
$('ul.navigation ul').hide();
$('ul.navigation li a').click(
function() {
var parentElement = this.parentNode.parentNode.id;
var elementTest = $(this).next();
if((elementTest.is('ul')) && (elementTest.is(':visible'))) {
$('#' + parentElement + ' ul:visible').slideUp('fast');
$(this).removeClass('active');
return false;
}
if((elementTest.is('ul')) && (!elementTest.is(':visible'))) {
$('#' + parentElement + ' ul:visible').slideUp('fast');
elementTest.slideDown('fast');
$('ul.navigation a').removeClass('active');
$(this).addClass('active');
return false;
}
}
);
}
$(document).ready(function() {accordionMenu();});
现在我需要弄清楚如何循环遍历列表项,并找到列表项后面的列表(即点击时,下拉以显示隐藏列表)。然后我需要在每个末尾添加一个跨度(in between&lt; / a&gt;和&lt; ul&gt;)。真的是这样的。这让我很困惑 - 我应该怎么做呢?
谢谢,
亚历
答案 0 :(得分:1)
$("#menu ul").each(function(){
$(this).closest("li").addClass("whatever_class_you_need")
.find("a").first().after("<span>something goes here</span>");
});
答案 1 :(得分:1)
:has选择器非常适合这种情况。
$("#menu li:has(ul)").addClass("hasSubMenu");
答案 2 :(得分:1)
你可以试试这个。
$('ul.navigation li').filter(function(){
return $(this).children('ul').length > 0;
}).each(function(){
$(this).find('a').after('<spam />');
})
.addClass('className');
答案 3 :(得分:1)
$('ul.navigation').children().has("ul").each(function(){
$(this).children("a").append("<span>test</span>");
});
这应该有效:)祝你的项目好运。