2012-10-28 40 views
2

我有一個問題,我的動畫完美地工作,但是當.hide();觸發它只是回到slideDown();功能。.hide()的作品,但然後顯示以前的動畫?

我在抓我的頭,雖然我假設它正在運行動畫,因爲以前的點擊仍然是活動的?

$('div.SocialShareJob').on('click', function(){ 
    $(this).find('p').slideUp(300).fadeOut(500); 
    $(this).find('.Icons').slideDown(500).fadeIn(900); 
}); 
$('div.CloseSharing').on('click', function(){ 
    $(this).parent('div.Icons').hide(); 
}); 
+0

您是否有重疊的div?這些'on'定義是多次調用函數的嗎? –

回答

4

你需要stop尚未完成的動畫,並清除隊列:

$('div.CloseSharing').on('click', function(event){ 
    $(this).parent('div.Icons').stop(true).hide(); 
}); 

如果closeSharing DIV是另一個的孩子,你可能還需要停止click事件傳播給父母。爲此,請將event.stopPropagation()添加到事件處理程序的開頭:

$('div.CloseSharing').on('click', function(event){ 
    event.stopPropagation(); 
    $(this).parent('div.Icons').stop(true).hide(); 
}); 
+2

感謝'stopPropagation',現在我應該刪除我的答案:) – undefined

+1

希望我沒有踩在你的腳趾那裏 - 我已經開始編寫編輯之前,你的答案來了! – Kelvin

+0

夥計們,非常感謝!不知道event.stopPropagation();這是問題!它正在傳播父母。頂級球員! –

相關問題