2013-12-08 50 views
0

我有一個功能,顯示一個div在我的導航欄點擊時,你可以切換它,所以當你再次按下時隱藏。jQuery:我需要一個反垃圾郵件在我的功能

問題是,你可以垃圾點擊它,所以動畫繼續並打破div。

我需要的是某種反垃圾郵件點擊,我希望它等到第一個動畫完成。

下面是代碼:

$("#navDown").click(function(){ 
if($("#navExpand").height()===0){ 
    $('#navArrow').animateRotate(0, -180); 
    $("#navExpand").animate({ 
     height: 150 
    }) 
    $(".navExCon").delay(300).fadeToggle(150); 
    } 
else if($("#navExpand").height()===150) 
    { 
$(".navExCon").fadeToggle(150); 
    $('#navArrow').animateRotate(180, 0); 
    $("#navExpand").delay(300).animate({ 
     height: 0 
    }); 
    }; 

});

UPDATE /解決方案

這是我做過什麼: 注:這將是與本網站使用的顏色更好,看到的變化。

$("#navDown").click("slow",function(){ // added time "slow": 600 u i think. 
    if($("#navExpand").height()===0){ 
    $('#navArrow').animateRotate(0, -180); 
    $("#navExpand").animate({ 
     height: 150 
    },200)     // added some time 
    $(".navExCon").fadeToggle(100); 
    } 
    else if($("#navExpand").height()===150) 
    { 
    $(".navExCon").fadeToggle(250); 
    $('#navArrow').animateRotate(180, 0); 
    $("#navExpand").animate({ 
     height: 0 
    },200);     // added some time 
    }; 
}); 
+1

其完美的罰款,以實際的答案張貼到自己的問題,將其標記爲接受,順便說一句。您不必將其作爲編輯。 –

+0

請添加您的解決方案作爲答案,並確實接受它。這不應該在你的問題的正文中。 – Benjamin

回答

0

你可以有一個回調函數,當動畫完成:

var animating = false; 
$("#navDown").click(function(){ 
    if (animating) { 
     return; // Don't start new animation 
    } 
    animating = true; 

    if($("#navExpand").height()===0){ 
     $('#navArrow').animateRotate(0, -180); 
     $("#navExpand").animate({ 
      height: 150 
     }) 
     $(".navExCon").delay(300).fadeToggle(150, function() { 
      // Will be called after animation is finished 
      animating = false; 
     }); 
    } 
    else if($("#navExpand").height()===150) 
    { 
     $(".navExCon").fadeToggle(150); 
     $('#navArrow').animateRotate(180, 0); 
     $("#navExpand").delay(300).animate({ 
      height: 0 
     }, function() { 
      // Will be called after animation is finished 
      animating = false; 
     }); 
    } 
}); 
+0

我嘗試過你的消化,點擊功能似乎沒有迴應。但是,在閱讀了一些關於回調的消息後,我發現了一個相當簡單的解決方案它正在更新中。 – user2453885