2011-02-18 109 views
0

我有一個名爲MyDiv的div。當用戶點擊它時,我怎麼一個接一個地調用2個函數?jQuery:綁定兩個事件

$('#MyDiv').click(function() { 
    action1() // wait until it finishes and call action2 
}); 

action1是一個腳本中的函數,在我的母版頁加載和action2是一個小的內聯腳本函數是在每一個頁面,這意味着我不能從action1調用action2因爲這個名字action2實際上是不同的每頁上都不一樣。

回答

2

如果動作1和動作2不asynchonous,你可以做:

$('#MyDiv').click(function() { action1(); action2() }); 

如果他們asynchonous,你可以做幾件事情。回調:

action1 = function(callback) { 
    //stuff 
    callback(); 
} 
$('#MyDiv').click(function() { action1(this) }); 

注意當你通過它你不叫動作2。只是傳遞函數。

你也可以火從動作1的事件,並告訴動作2監聽該事件(從內存工作在這裏):

action1 = function(element) { 
    //stuff 
    $(element).trigger('action1_finished') 
} 
$('#MyDiv').click(function() { action1(this) }).bind('action1_finished', action2) 
+0

在我的情況,我想動作1完成後運行動作2;這叫做同步還是異步?選項1是否會同時觸發兩個功能? – frenchie 2011-02-18 20:06:51

1

Javascript函數是同步的。
您可以在action1之後撥打action2,並在action1完成後運行。

如果action1是異步的(如果它使用AJAX或動畫),則需要使其具有回調參數。