我正在使用jQuery UI 1.8。
我注意到 Jquery 动画是异步的。我认为这对我来说是个问题,因为我有一个带有 Jquery 手风琴的页面,其中包含几个部分。当页面加载时,我调用一个扩展这些部分的 Javascript 函数。它们在扩展时动画(即,缓慢扩展)。
页面启动时还有一个功能,它使用 Jquery 滚动到页面上的特定元素。它本身不起作用,我想我已经将其范围缩小到手风琴的动画。我对此进行了推理,因为当我使用window.setTimeout(myScrollFunction, 3000)
调用执行滚动的函数时,它可以工作。就好像动画阻止了页面滚动,这是有道理的。
我听说过这个.promise()
功能,但我认为它在这里可能不适合我。我需要做的是执行扩展手风琴部分的函数,但要等到其中调用的所有动画都完成后再继续下一个函数。
我不能粘贴代码示例,创建测试用例会很复杂且耗时,所以我希望我能清楚地解释我的情况以获得一些好的答案。
概念示例:
我这样做是为了让您更好地了解我想要做什么:
$(document).ready(function () {
//I want to call ExpandSections() on startup
ExpandSections();
//but I don't want to call ScrollToElement() until
//all accordion sections that were expanded in ExpandSections()
//have finished expanding.
ScrollToElement();
});
function ExpandSections(){
element1.accordion("option", "active", 0);
element2.accordion("option", "active", 0);
element3.accordion("option", "active", 0);
}
function ScrollToElement() {
$('html, body').animate({
scrollTop: ElementToScrollTo.offset().top
}, 1);
}