2012-01-30 40 views
0

我有一些回調的動畫代碼。我需要一段代碼才能在回調完成後運行。我不想修改動畫代碼或回調。在運行一些額外的代碼之前,如何確保所有回調已經運行。我應該看看隊列嗎?當動畫完成但仍有待處理的回調時,該項目是否從隊列中移除?我應該在這裏做什麼?如何在jQuery動畫完成所有回調後才能運行一些代碼?

var animateFunc = function() { 
     $('#search').animate({ height: '0px', opacity: '0.0' }, 'fast', 'linear',       function() { 
      $('#search-state').val(searchContainerState.currentPage); 

     }); 
    }; 

例如呼叫:

animateFunc(); 
someOtherFunc(); //someOtherFunc needs to run after the animation callback code. 

如何正確地做到這一點? 謝謝!

+1

*我不想修改動畫代碼或回調* ......爲什麼? – 2012-01-30 22:07:45

回答

1

這裏:

$('#search').queue(someOtherFunc); 

這將那個函數添加到隊列的效果,這意味着它將現有動畫操作之後被調用的端部。

現場演示:http://jsfiddle.net/BkmWg/

+0

這正是我正在尋找的。謝謝! – Hcabnettek 2012-01-31 22:18:47

0

animateFunc以回調爲參數,然後在任何地方使用animateFunc如果您希望在動畫上執行任何操作,請將處理程序作爲參數傳遞給它。嘗試這個。

var animateFunc = function (callback) { 
     $('#search').animate({ height: '0px', opacity: '0.0' }, 
      'fast', 'linear', function() { 
       $('#search-state').val(searchContainerState.currentPage); 

       if($.isFunction(callback)){ 
        callback(); 
       } 
     }); 
    }; 

animateFunc(someOtherFunc); 

我知道我在修改這是不是你所需要的animateFunc回調,但是這是爲了確保在動畫完成正確的方式和要執行的任何回調。

相關問題