2016-10-19 52 views
0

我面臨的問題是,當我多次點擊#apple1時,手風琴面板appleInfo1反覆上下移動,直到它與我最初單擊按鈕的次數相匹配。Jquery - 多次點擊造成問題

$('#appleInfo1').hide().promise().done(function(){ 
    $('#apple1').click(function(){ 
     $('#appleInfo1').slideToggle(1000); 
     $('#intelInfo1, #ibmInfo1, #amdInfo1').slideUp(1000); 
    }); 
}); 
+0

順便說一句,可以考慮使用一個類,而不是3種ID選擇。 –

+0

此外,我會考慮使用JavaScript來切換一個類,並使用CSS轉換設置樣式和動畫位置 - 這是一個更好的問題分離。 –

回答

1

您需要stop()任何正在進行的動畫,當你再次點擊。
此外,承諾變得毫無意義在持續時間不及格時hide()

var apple = $('#appleInfo1').hide() 

$('#apple1').click(function(){ 
    apple.stop(true,true).slideToggle(1000); 
    $('#intelInfo1, #ibmInfo1, #amdInfo1').stop(true,true).slideUp(1000); 
});