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



我使用的是jQuery 1.9.1。

假设我有一个id="clickMe"的按钮我的jQuery代码是:

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

现在,我希望最后执行"eventHandler2",以便我可以使用"eventHandler1"的输出。是否有任何方法可以手动做到这一点,而不仅仅是我把处理程序在点击事件?还有一件事,"eventHandler1()"one_answers"eventHandler2()"出现在不同的.js文件中,因此需要

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

例如,当deferred是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
});

相关内容

  • 没有找到相关文章

最新更新