gpt4 book ai didi

javascript - 有没有一种直接的方法可以让集合上的 jQuery 动画创建一个新的 promise ?

转载 作者:行者123 更新时间:2023-11-30 06:53:30 24 4
gpt4 key购买 nike

当我在没有任何参数的情况下调用 jQuery 集合的 promise 方法时,我得到一个 promise ,一旦集合中元素上的所有动画都完成,它就会解析。对该元素的同一方法的每次进一步调用将只返回相同的 promise 。有没有一种直接的方法来“重置”promise,以便在初始动画完成并且初始 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 返回与第一次调用相同的 promise。由于该 promise 已经解决,第二个处理程序中的评估显示“display”属性不是“none”,因为 slideUp 动画尚未完成。

最佳答案

尝试

$(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/ optionsstart, progress , done, always (promises);另见 step , complete 回调

关于javascript - 有没有一种直接的方法可以让集合上的 jQuery 动画创建一个新的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com