我确信答案很简单但是; 我正在尝试为网站上的餐馆菜单系统编写一个简单的Jquery。 我希望menu_list项目在所选择的slideDown之前可以看到slideUp我可以通过延迟slideDown来实现这一点,如果menu_list已经可见但这意味着如果不是则会延迟,这是很好的。 我已经尝试推迟但是由于某种原因,第二个menu_list只显示在当前的一个而不是当前首先滑动的那个。 我已经尝试了,但是这也不起作用。 谁能看到我做错了什么?
此代码有效但延迟(原因很明显)
$('.s_menu, .m_menu').click(function(){
var menuid = event.target.id;
var mlist = ('#') + (menuid) + ('_list');
var last = $('.menu_list').not(mlist);
$(last).slideUp(400);
$(mlist).delay(600).slideDown(400);
return(false);
});
});
此代码的div显示在彼此之下而没有先前的滑动。
function first(){$(last).slideUp(400);}
function next(){$(mlist).slideDown(400);}
$.when(first).then(next);
return(false);
});
});
就像这样
if ($(last).is(':hidden')) {
$(mlist).slideDown(400);
} else {
$(last).slideUp(400);
$(mlist).delay(600).slideDown(400);
}
return(false);
});
});
HMTL是:
<div id="menu_nav">
<ul class="menu_top">
<li id="menu_starters" class="menu">STARTERS</li>
<li id="menu_mains" class="menu" >MAINS</li>
<li id="menu_noodles" class="menu">NOODLES & RICE</li>
</ul>
<ul id="start_nav" class="menu_sub">
<li id="st_meat" class="s_menu">MEAT & FISH</li>
<li id="st_veg" class="s_menu">VEGETARIAN</li>
<li id="st_soups" class="s_menu">SOUPS</li>
<li id="st_salads" class="s_menu">SALADS</li>
</ul>
<ul id="mains_nav" class="menu_sub">
<li id="ma_curries" class="m_menu">CURRIES</li>
<li id="ma_meat" class="m_menu">MEAT</li>
<li id="ma_seafood" class="m_menu">SEAFOOD</li>
<li id="ma_veg" class="m_menu">VEGETARIAN</li>
</ul>
</div>
<article id="st_meat_list" class="st menu_list">
<ul>
<!--series of list items here-->
</ul>
<article id="st_veg_list" class="st menu_list">
<ul>
<!--series of list items here-->
</ul>
<article id="st_soups_list" class="st menu_list">
<ul>
<!--series of list items here-->
</ul>
以及包含每个列表的文章
答案 0 :(得分:0)
由于您只有一个子菜单一直向下滑动,请在向下滑动目标菜单之前尝试隐藏()所有子菜单,然后使用hide()的回调向下滑动目标菜单。可能是这样的:
$('.s_menu, .m_menu').click(function(){
var correspnding_list = $(selector_to_mlist);
var list = $('.common_class_of_lists');
list.slideUp({
complete: function (){
corresponding_list.slideDown();
}
})
});
更新:请使用slideToggle()而不是slideDown()