【问题标题】:Close Open Menu Before Animating Another在制作另一个动画之前关闭打开的菜单
【发布时间】:2013-01-11 18:52:16
【问题描述】:

我正在尝试,并且仍在寻找解决此问题的最佳方法。我有多个下拉菜单。我正在尝试检查其他打开的菜单,关闭它们,然后在单击的菜单上运行动画,或者如果单击的菜单已经打开,则直接关闭单击的菜单。这是我到目前为止所拥有的。

$('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/

【问题讨论】:

  • 你的问题是什么。如果您正在寻找代码审查,请尝试codereview.stackexchange.com
  • 你能用标记设置一个小提琴吗?这将使我们更容易使用和可视化。
  • 抱歉没有解释。问题是,我不知道如何在下一个打开之前关闭打开的菜单动画。 JsFiddle:jsfiddle.net/JG9dB
  • 也许“我怎样才能让被点击的菜单等待打开,直到另一个菜单的关闭动画完成?”

标签: jquery drop-down-menu menu


【解决方案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/

这应该可以解决问题。如果您有任何其他问题,请告诉我!

【讨论】:

  • 效果很好!有没有办法减慢速度,让它更明显?类似的东西:knapheide.com
  • 是的,当然!在上滑/下滑功能中,您可以将“快速”/“中”替换为数字。此选项用于持续时间,它控制动画长度(以毫秒为单位)。另请参阅我对原始帖子所做的更改。希望这会有所帮助!
  • 我尝试减慢它的速度,但似乎一个菜单在另一个打开时关闭,而不是在触发事件之前关闭以打开下一个。这就是我想要完成的。
  • 非常抱歉!我对最初的帖子进行了更改。这将保证所有兄弟姐妹在滑下之前都会向上滑!
猜你喜欢
  • 2018-10-18
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多