2016-12-20 54 views
1

本質上講,這是我的代碼:如何確保在完成相同的事件處理程序後執行事件處理程序?

$('#press').click(function() { alert('First') }); 
 
$('#press').click(function() { alert('Second') });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="press">press</button>

我怎樣才能確保,如果第二個事件handler-完成第一個事件handler- $('#press').click(firstFunction);$('#press').click(secondFunction);只執行?

+0

的可能的複製[jQuery的 - 確保事件處理程序最後在處理程序鏈中執行](http:// stackov erlot.com/questions/3150841/jquery-make-sure-event-handler-is-last-to-be-executed-in-chain-of-handlers) –

回答

3

我該如何確保在第一個事件處理程序完成後才執行第二個事件處理程序?

使用你當前的模式,你不能。但是,你可以依次調用它們的單一事件處理中,像這樣:

var firstFunction = function() { alert('First') }; 
 
var secondFunction = function() { alert('Second') }; 
 
$('#press').click(function() { 
 
    firstFunction(); 
 
    secondFunction(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="press">press</button>

+0

不幸的是,在我的情況下,我無法將這些事件連接在一起也沒有功能。 –

+0

這是爲什麼?如果你可以提供函數引用,那麼這應該是可能的。 –

+0

嗯,我只是想讓它更具可讀性,因此我把函數引用。 :)如果它給了一個混淆,那麼讓我編輯我的剪切代碼。 –

2

使用回調如下圖所示

var firstFunction = function(callback) { 
 
    alert('First'); 
 
    callback(); 
 
}; 
 
var secondFunction = function() { 
 
    alert('Second') 
 
}; 
 

 
$('#press').click(function() { 
 
    firstFunction(secondFunction); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="press">press</button>