是否有一种直接的方法可以让jQuery动画在集合上创建一个新的承诺?
Is there a straightforward way to have a jQuery animation on a collection create a new promise?
当我在没有任何参数的情况下调用jQuery集合上的promise
方法时,我得到一个承诺,一旦集合中元素的所有动画完成,它就会解决。对该元素的相同方法的每次进一步调用都将返回相同的承诺。是否有一种直接的方法来"重置"承诺,以便一旦初始动画完成并且初始承诺已经解决,我可以处理下一个动画完成时?
$('.some-element').slideDown();
$('.some-element').promise().done(function () {
// e.g. evaluate the "display" property of the element which should not be "none"
this.slideUp();
this.promise().done(function () {
// e.g. evaluate the "display" property of the element which should be "none"
});
});
上面代码中的问题是第二次调用promise
返回与第一次调用相同的承诺。由于这个承诺已经被解决了,第二个处理程序中的求值显示"display"属性不是"none",因为slideUp
动画尚未完成。
Try
$(function () {
function slider(d, next, callback) {
$("div").slideUp({
duration: d,
done: function (promise) {
if (promise.state() === "resolved"
&& $(this).css("display") === "none") {
console.log($(this).css("display"));
$(this).slideDown({
duration: d,
done: function (promise) {
if (promise.state() === "resolved"
&& $(this).css("display") === "block") {
console.log($(this).css("display"));
slider(next, (d + next) / 2, function () {
console.log("next animation beginning at "
+ $.now());
});
}
},
complete: function () {
return callback != undefined ? callback() : $.noop();
}
});
};
}
});
};
slider(3000, 1500, function () {
console.log("next animation beginning at " + $.now())
});
});
jsfiddle http://jsfiddle.net/guest271314/3xdmD/
参见http://api.jquery.com/slideup/, http://api.jquery.com/slidedown/options
at start
, progress
, done
, always
(promises
);参见step
, complete
回调
您可以将承诺数组传递给$.when
,如文档
相关文章:
- Lodash从集合创建集合
- 使用Undercore创建对象集合
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- 骨干和轨道集合.创建等待
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- Meteor:如何使用空格键创建包含两个集合数据的树列表
- 从筛选的模型创建集合
- MongoDB 的集合构造函数是否仅在集合不存在时才创建集合
- 如何动态创建集合名称(取决于用户信息)
- 骨干.js:有没有办法在创建集合时为集合中的所有模型设置属性
- 角度 ng 重复 - 动态创建集合
- 需要将 JQuery 与 Shopify 一起使用的示例来创建集合并使用返回的 ID 添加产品
- 在 JavaScript 中创建集合(相同类型的唯一元素)时,习惯上用作键的值
- 如何根据url在Meteor中创建集合的新副本
- AngularJS使用ng选项来创建集合
- 主干:从JSON创建集合
- 主干:从JSON错误中创建集合
- 主干创建集合,然后视图-异步
- BackboneJs:从嵌套对象中创建集合中的多个模型
- Lodash从重复的对象键创建集合