簡體   English   中英

在jQuery中設置click事件的事件處理程序的執行順序?

[英]Set execution order of event-handlers of click event in jQuery?

我正在使用jQuery 1.9.1。

假設我有一個id =“ clickMe”的按鈕,我的jQuery代碼是:

$('#clickMe').click(function(event)
{
    eventHandler1();//do something
    eventHandler2();//use output from eventHandler1() and do something
}

現在,我希望最后執行“ eventHandler2”,以便可以使用“ eventHandler1”的輸出。 有什么方法可以手動執行此操作,而不僅僅是我將處理程序放入click事件中的方法? 另外一件事情,“ eventHandler1()”和“ eventHandler2()”存在於不同的.js文件中,因此是必需的。

jQuery.when()提供了一種基於一個或多個對象(通常是表示異步事件的Deferred對象jQuery.when()執行回調函數的方法。

例如,當延遲對象是jQuery.ajax()請求時,參數將是請求的jqXHR objects ,按照在參數列表中給出的順序。

$.when(eventHandler1).then(eventHandler2).done(function(){
 alert('done.');
});

因此,甚至可以使用GLOBAL變量存儲eventHandler1輸出並在eventHandler2內部訪問該變量

var someVar;

function eventHandler1()
{
   // process
   someVar = some value from process
   return someVar;
}

function eventHandler2()
{
   alert(someVar);
}

對OP評論的回應

如您在隊列中詢問執行處理程序時,可以使用Jai答案。

您可以使用.when .then.done如下。

$.when(eventHandler1).then(eventHandler2).done(function(){
  //process code
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM