我有一組菜單,其中包含一組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