我正在使用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文件中,因而也是需求。
答案 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
});