簡體   English   中英

在jQuery動畫結束之前運行函數

[英]Run function just before jQuery animation ends

我有一個滾動器,可使用上一個/下一個按鈕設置動畫。 動畫的持續時間是根據移動的距離計算的,因此持續時間是可變的。

$c.animate({ scrollLeft: scrollLeft },
    duration, 'easeInOutExpo', function () {
        if (showPrev === 0) $s.attr("data-prev", showPrev);
        if (showNext === 0) $s.attr("data-next", showNext);
});

動畫完成后,我想刷新用戶界面(按鈕),您可以看到通過更新兩個數據屬性來完成。

迄今為止,我已經嘗試了兩種不同的選擇:

1.在動畫之前更新數據屬性

我使用CSS過渡延遲來使更新在以后發生,但無法與動畫的可變持續時間完全協調-有時可能會消失。

2.動畫后更新數據屬性

我在動畫之后直接附加了更新功能,該功能可以正常工作,但是動畫完成后,在開始更新之前會有明顯的延遲。

兩者都不是完美的。

理想情況下,我想做的就是在滾動動畫結束之前啟動該功能-因此,如果滾動持續時間為1s,我想以duration - 0.2s (0.8s)的duration - 0.2s更新屬性。

考慮到我可以完全控制持續時間,這似乎完全有可能。

我不知道如何使用jQuery實現此功能-可能同時啟動兩個任務?

憑空想像力,我不是jQuery專家,因此不勝感激。

請嘗試使用此代碼

$c.animate({ scrollLeft: scrollLeft },
duration, 'easeInOutExpo', function () {
    if (showPrev === 0) $s.attr("data-prev", showPrev);
    if (showNext === 0) $s.attr("data-next", showNext);

    time = setTimeout(function () {

    //keep your code here

   }, duration-0.2s);
});

duration-0.2s =>使其正確,我只是以示例為例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM