我有一组菜单,其中包含一组li
的菜单,它们在盘旋时为容器的高度设置动画,然后显示相关的子节点.subnav
。只运行一次jQuery动画,然后执行其他操作,然后颠倒动画
我遇到的问题是2倍。
当我将鼠标悬停在
li
的快速,容器的动画减慢,因为它再次从该点开始播放动画。我希望能够说:“只有当将鼠标悬停在任何li
的上方时,才会动起来一次”,然后在将鼠标悬停在容器或subnav外时将其返回到原始位置。当
.subnav
内容显示并且我将鼠标悬停在另一个触发器li上时,动画似乎尝试再次在容器上运行,并且这意味着在之后应该发生的任何操作中存在延迟。
我一直在使用unbind()
和bind()
尝试,但没有成功,我也用:animated
尝试,但我似乎无法得到正确的逻辑。
这里是我的代码:
var navHeight = $('#primary-nav').height();
$('#primary-nav-list li').hover(function() {
var elem = $(this);
if ($(this).is('#roc-noir')){ var subnavHeight = 173; }
else { var subnavHeight = 235; }
$('#primary-nav').stop(true,false).animate({height:subnavHeight}, function(){
$('#primary-nav-list li').removeClass('active');
$(this).addClass('open');
$(elem).addClass('active');
$('#primary-nav-list li').not(this).find('.subnav').fadeOut('fast');
$(elem).find('.subnav').fadeIn('fast');
});
}, function(){
$('#primary-nav').removeClass('open');
$('#primary-nav').stop(true,false).animate({height:navHeight}, function(){
$('#primary-nav-list li').removeClass('active');
$('#primary-nav-list li').not(this).find('.subnav').hide();
});
});
任何帮助,将不胜感激。
你可以包含html或jsfiddle吗? – Hogan 2011-05-13 12:58:39