对于 Ajax 调用,我有一些不同元素的转换,必须按特定顺序调用。在阅读有关 jQuery Deferred 的信息时,我认为这就是我想要的,但我似乎无法让它工作。
我做了一个简单的 jsfiddle 来说明我想要归档的内容:http: //jsfiddle.net/pe5Bb/1/
我猜的问题是css3转换。所有功能都从头开始执行。但是,当我在 transitionend 回调中放置一个 console.log 时,它似乎可以工作,但该函数之前仍然执行。
function box2() {
var deferred = $.Deferred();
if ( $('#box2').hasClass('active') ) {
$('#box2').css({opacity:0}).bind(transitionend, function(){
console.log("css3 done");
deferred.resolve();
$('#box2').unbind(transitionend);
});
} else {
deferred.resolve();
}
return deferred.promise();
}
我想要实现的是我可以创建多个函数(具有转换到新内容的状态)并且我可以知道它们应该以什么顺序被调用。在此示例中,我使用有时通过添加/删除类来调用的 css3 转换。如果在这种情况下使用 deferred 不正确,我想听听。