2013-03-20 81 views
2

我试图让下面的代码工作。jquery,不知道为什么动画高度不能按预期工作

当用户滚动到点x时,菜单包装的高度降低。他们可以通过点击.extender来恢复高度。点击此链接后,链接消失(所以没有切换功能)。

我看到切换往往是类似用例的解决方案,我最好想知道如何解决这个问题,以及为什么我的代码不起作用。

$(document).scroll(function(){ 
    var height = $('div#zone-menu-wrapper').height(); 
    if (some_logic){ 
     $('div#zone-branding-wrapper').animate({height: 10}, 1500); 
    } 
}); 

$('.extender').click(function(){ 
    $('div#zone-branding-wrapper').animate({height: 380}, 1500); 
    return false; 
}); 
+1

你已经给出了一个很好的解释你的代码是干什么的。有什么问题? – isherwood 2013-03-20 17:22:56

+1

你应该在动画之前使用jquery stop。因为滚动将为每个像素更改 – Anoop 2013-03-20 17:23:24

+0

嗨,问题是,当我单击扩展高度动画不会触发,并保持相同的高度 – rix 2013-03-21 08:23:50

回答

1

如果动画已在进行中,则返回。

var inProgress = false; 
$(document).scroll(function(){ 
    if(inProgress)return; 
    var height = $('div#zone-menu-wrapper').height(); 
    if (some_logic){ 
     inProgress = true; 
     $('div#zone-branding-wrapper').animate({height: 10}, 1500, function(){ 
        inProgress = false; 
     }); 
    } 
}); 

$('.extender').click(function(){ 
    $('div#zone-branding-wrapper').animate({height: 380}, 1500); 
    return false; 
}); 
+0

感谢您的提示。我稍微修改了你的答案,所以动画高度只被调用一次。我认为问题在于它被称为不止一次,但您的回答让我接受这一点,所以您可以获得积分。 – rix 2013-03-21 09:07:13

相关问题