我正在尝试,仍然找到了解决这个问题的最佳方法。我有多个下拉菜单。我正在尝试检查其他打开的菜单,关闭它们,然后在单击的菜单上运行动画,或者只是关闭单击的菜单(如果它已经打开)。这是我到目前为止所做的。
$('ul.primary li').click(function(event) {
if ($(this).children('ul.drop').is(':visible')) {
$(this).children('ul.drop').slideUp(function() {
$(this).parent('li').removeClass('active');
});
}
else if ($(this).siblings().children('ul.drop').is(':visible')) {
$(this).siblings().children('ul.drop').slideUp(function() {
$(this).parent('li').removeClass('active');
});
$(this).children('ul.drop').slideDown(function() {
$(this).parent('li').addClass('active');
});
}
else {
$(this).children('ul.drop').slideDown(function() {
$(this).parent('li').addClass('active');
});
}
});
编辑:我无法弄清楚如何在点击的下拉动画打开之前关闭打开的下拉动画。 JsFiddle:http://jsfiddle.net/JG9dB/
答案 0 :(得分:1)
这就是我要去做的事情......
JAVASCRIPT:
$('ul.primary>li').click(function(event) {
var li = $(this);
var liOld = $('ul.active').parents("li");
if($('ul.active').length!=0){
$('ul.active').removeClass('active').slideUp('slow', function(){
if(li.index() != liOld.index()){
li.children('ul.drop').slideDown('slow').addClass('active');
}
});
}
else{
$(this).children('ul.drop').slideDown('slow').addClass('active');
}
});
样本: http://jsfiddle.net/JG9dB/35/
这应该解决问题。如果您有任何其他问题,请与我们联系!