2013-03-20 80 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

相關問題