在jQuery中设置click事件的事件处理程序的执行顺序?

时间:2013-04-17 06:28:44

标签: event-handling handler 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文件中,因而也是需求。

2 个答案:

答案 0 :(得分:4)

jQuery.when()提供了一种基于一个或多个对象执行回调函数的方法,通常是表示异步事件的Deferred对象。

例如,当Deferreds为jQuery.ajax()个请求时,参数将是请求的jqXHR objects,按参数列表中的顺序排列。

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

答案 1 :(得分:1)

甚至可以使用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
});