jQuery 停止動畫

在本教程中,你將學習如何使用 jQuery 停止執行動畫。

jQuery stop() 方法

jQuery stop() 方法用於在完成之前停止當前在所選元素上執行的 jQuery 動畫或效果。

stop() 可以使用以下命令給出 jQuery 方法的基本語法 :

$(selector).stop(stopAll, goToEnd); 

上述語法中的引數具有以下含義:

  • 可選的 stopAll Boolean 引數指定是否刪除排隊的動畫。預設值為 false ,表示只停止當前動畫,佇列中的其餘動畫將在之後執行。
  • 可選的 goToEnd Boolean 引數指定是否立即完成當前動畫。預設值是 false

這是一個簡單的示例,它演示了實際操作中的 jQuery stop() 方法,你可以在單擊按鈕時啟動和停止動畫。

<script type="text/javascript">
$(document).ready(function(){
    // Start animation
    $(".start-btn").click(function(){
      $("img").animate({left: "+=150px"}, 2000);
    });
 
    // Stop running animation
    $(".stop-btn").click(function(){
      $("img").stop();
    });
    
    // Start animation in the opposite direction
    $(".back-btn").click(function(){
      $("img").animate({left: "-=150px"}, 2000);
    });
 
    // Reset to default
    $(".reset-btn").click(function(){
      $("img").animate({left: "0"}, "fast");
    });
});
</script>

注意: jQuery stop() 方法適用於所有 jQuery 效果,如淡入淡出滑動動畫顯示和隱藏效果以及自定義動畫

這是此方法的另一個示例,其中,如果在開始動畫之後但在完成動畫之前再次單擊 Slide Toggle 按鈕,則動畫將從儲存的起點開始以相反的方向開始。

<script type="text/javascript">
$(document).ready(function(){
    // Kill and toggle the current sliding animation
    $(".toggle-btn").on("click", function(){
        $(".box").stop().slideToggle(1000);
    });
});
</script>

建立平滑的懸停效果

在建立動畫懸停效果時,當你快速放置和移除滑鼠游標時,你可能遇到的常見問題之一是多個排隊動畫。因為,在這種情況下 mouseentermouseleave 事件在動畫完成之前快速觸發。要避免此問題並建立一個漂亮而平滑的懸停效果,你可以將 stop(true, true) 新增到方法鏈中,如下所示:

<script type="text/javascript">
$(document).ready(function(){
    $(".box").hover(function(){
        $(this).find("img").stop(true, true).fadeOut();
    }, function(){
        $(this).find("img").stop(true, true).fadeIn();
    });
});
</script>

注意: jQuery 方法 stop(true, true) 清除所有排隊的動畫,並將當前動畫跳轉到最終值。