1

我正在使用 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文件中,因此需要。

4

2 回答 2

4

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

例如,当 Deferred 是jQuery.ajax()请求时,参数将是请求的参数jqXHR objects,按照它们在参数列表中给出的顺序。

$.when(eventHandler1).then(eventHandler2).done(function(){
 alert('done.');
});
于 2013-04-17T06:39:07.610 回答
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
});
于 2013-04-17T06:31:46.830 回答