我正在使用jQuery作为垂直站点导航菜单,站点内的所有链接。我有基本的功能,但是对于正确的if-else来说,我不知道如何完成以下任务:
如代码所示,子菜单项始终是最初隐藏的,但是如果用户选择的li或其子lis之一被分配了类currentpage,我希望它们开始显示。 目前的代码是:
(function(){
$('li:has(ul)')
.click(function(event){
if (this == event.target || $(event.target).parent()[0] == this) {
if ($(this).children('ul').is(':hidden')) {
$(this)
.css('list-style-image','url(minus.gif)')
.children('ul').slideDown();
}
else {
$(this)
.css('list-style-image','url(plus.gif)')
.children('ul').slideUp();
}
}
})
.css({
cursor:'pointer',
'list-style-image':'url(plus.gif)'
})
.children('ul').hide();
$('li:not(:has(ul))').css({
cursor: 'default',
'list-style-image':'none'
});
});
希望有人能让我走上正轨。
鲍勃麦克劳德答案 0 :(得分:1)
如果用户选择的li或其中一个子lis被分配了类currentpage,我希望它们开始显示。
之后怎么做:
$('.currentpage').parents('ul').show();
答案 1 :(得分:0)
我会创建一个showMenuItem()
函数,并在要显示菜单项的两个地方调用它。
$(function() { $('.currentpage').each(function() {
if ($(this).parents().filter('ul').is(":hidden")) {
showMenuItem($(this).parents().filter('ul'));
} else {
showMenuItem(this);
}
}});