2010-05-12 68 views
1

我是新來的JavaScript/jQuery這真的讓我難住。函數在fadeOut()之前觸發;完成

我想在這裏實現的是

  • 在切換一個#sameDayTab jQuery將尋找.changeAlert和淡出它的div容器,當再次切換的股利將淡入(這個效果很好。)
  • 每個切換也會調用一個函數,告訴我有多少.changeAlert在頁面上存在,並在一個範圍內適當地更新數字。問題是,當我第一次點擊切換的錨時,可見的數量應該爲0,因爲.changeAlert已被fadeOut隱藏,而不是返回頁面加載時存在的類的數量。無論激活切換的次數,該值都不會改變。

任何幫助非常感謝。

function totalNumFares() 
    { 
    var n = $('.changeAlert:visible').size();    
    $('.numFares').replaceWith('<span class=\"numFares\">'+ n +'</span>'); 

    } 

totalNumFares();  

//Toggle On/off Same Day Connections 

$('a#sameDayTab').toggle(function() { 

    $('.changeAlert').parent().parent().parent().parent().parent().fadeOut(); 
    totalNumFares();   


    },function(){ 
    $('.changeAlert').parent().parent().parent().parent().parent().fadeIn(); 
    totalNumFares(); 


}); 
+0

我可能是錯的,但我記得有一個區別,如果你調用帶圓括號和不帶圓括號的函數,關於它是如何立即調用的 - 是那個胡扯嗎? – user97410 2010-05-12 21:08:13

+0

@chibineku - 當你使用一個函數作爲回調函數時,你只傳遞名字,這會傳遞函數,見下面的例子我的答案......當你在上面加上括號時,你實際上是調用函數和*傳遞*結果,這不是你想要99%的回調時間。 – 2010-05-12 21:15:44

回答

0

你需要運行它作爲.fadeOut()回調,像這樣的:目前

$('.changeAlert').parent().parent().parent().parent().parent().fadeOut(totalNumFares); 

它在開始後立即執行褪色,但是它的:visible直到它完成褪色,所以要計算你想要的,你需要在.fadeOut()完成之後更新它,這是回調運行的時間。

另外,如果您有一個可以用作選擇器的父類的類,那麼您可能會用單個.closest(selector)調用替換該.parent()鏈。

+0

完美地工作。一般來說,我仍然用jQuery和JavaScript來發現自己的腳。感謝下一次我知道的解釋。 – willmcneilly 2010-05-12 21:10:37

0

您需要將其設置爲回調:

$(function(){ 
    // You can set duration to whatever you like 
    $("#item").fadeOut(duration, function(){ 
     totalNumFares(); 
    }); 
}); 

http://api.jquery.com/fadeOut/

+0

感謝您的幫助,這是一種享受。 – willmcneilly 2010-05-12 21:11:07

相關問題