JQuery中stop方法的使用

轉載來源:https://www.cnblogs.com/goodborder/p/5843050.html

 

在前臺頁面開發中有時候我們會需要一些比較酷的效果,這個時候使用JQuery中的動畫來實現便顯得非常的簡單。

最近在工作中碰到了一個頁面元素移動的效果,這是個簡單的頁面效果也非常容易實現。

在使用中用到了一個停止動畫的方法"stop()",以前只是用也沒有過多的關注。

這幾天再次碰到,便翻開文檔測試了一番,竟也有了一些新的認識。對這個方法有了全新的瞭解,在這裏把我的測試記錄下來。

在JQuery文檔中對這個方法的解釋是這樣的: 

一、概述

停止所有在指定元素上正在運行的動畫。

如果隊列中有等待執行的動畫(並且clearQueue沒有設爲true),他們將被馬上執行。

二、沒有參數

場景模擬

假設有一個元素需要在背景中進行移動,然後回到起始位置。頁面中有三個按鈕,分別負責“開始移動”,“採用了stop方法的迴歸”,“沒有采用stop方法的迴歸”。

整體頁面效果圖如下:

測試代碼和效果

<script type="text/javascript">
        
        $(function () {
            //向右移動600px
            $("#Button1").click(function () {
                $("#move").stop().animate({ left: 610 }, 3000); 
            });
            //立即往回移動(有stop)
            $("#Button2").click(function () {
                $("#move").stop().animate({ left: 10 }, 3000); 
            });
            //移動完600px,纔會往回移動(沒有stop)
            $("#Button3").click(function () {
                $("#move").animate({ left: 10 }, 3000);
            });

        });
    </script>
View Code

通過測試我們不難發現

有stop,當藍色方塊在向右側移動的時候,點擊按鈕,方塊會立即往回返(向左側移動)。

沒有stop,當藍色方塊在向右側移動的時候,點擊按鈕,方塊會等到完全移動到指定位置後才往回返(向左側移動)。

測試總結

stop()停止了當前正在執行的動畫,並使後續的動畫立即得到了執行。

 三、兩個參數或者一個參數

查看文檔可以知道這個時候參數依次爲:[clearQueue],[gotoEnd]  並且都爲可選,類型都爲Boolean。

clearQueue:如果設置成true,則清空隊列。可以立即結束動畫。

gotoEnd:讓當前正在執行的動畫立即完成,並且重設show和hide的原始樣式,調用回調函數等。

我們可以挨個進行測試。代碼如下:

<style type="text/css">
        table, tr, th, td {
            margin: 0px;
            padding: 5px;
            border-collapse: collapse;
            border: 1px solid black;
        }

        .bg {
            background-color: #8FBC8F;
            border: 1px solid black;
            width: 1000px;
            height: 200px;
            margin: 10px;
            position: relative;
        }

        .line {
            position: absolute;
            background-color: #3b9feb;
        }

        #linetop {
            top: 10px;
            left: 10px; /*width:980px;*/
            height: 5px;
        }
    </style>
    <script type="text/javascript">

        $(function () {
            // 

            var line;

            $("#start").click(function () {
                line = $("#linetop").animate({ width: 980 }, 3000)
                                    .animate({ height: 180 }, 3000);
            });


            $("#stop").click(function () {
                $("#linetop").stop();
            });

            $("#stop_true").click(function () {
                $("#linetop").stop(true);
            });

            $("#stop_false").click(function () {
                $("#linetop").stop(false);
            });


            $("#stop_true_true").click(function () {
                $("#linetop").stop(true, true);
            });

            $("#stop_true_false").click(function () {
                $("#linetop").stop(true, false);
            });

            $("#stop_false_true").click(function () {
                $("#linetop").stop(false, true);
            });

            $("#stop_false_false").click(function () {
                $("#linetop").stop(false, false);
            });

        });
    </script>
View Code
<body><input type="button" id="start" value="動作開始" />
    <table>
        <tr>
            <th>方法</th>
            <th>參數</th>
            <th>說明</th>
            <th>方法</th>
            <th>參數</th>
            <th>說明</th>
        </tr>
        <tr>
            <td>
                <input type="button" id="stop" value="stop()" /></td>
            <td></td>
            <td colspan="4">清空隊列,當前執行動作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。後續動作會不再執行。
                等同於:<span style="color:#ff6a00; font-weight:bold;">stop(false,false)</span>
            </td>
        </tr>
        <tr>
            <td>
                <input type="button" id="stop_true" value="stop(true)" /></td>
            <td>[clearQueue]</td>
            <td>清空隊列,當前執行動作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。後續動作會不再執行。</td>
            <td>
                <input type="button" id="stop_false" value="stop(false)" /></td>
            <td>[clearQueue]</td>
            <td>不清空隊列,當前執行動作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。後續動作會立即執行。</td>
        </tr>
        <tr>
            <td>
                <input type="button" id="stop_true_true" value="stop(true,true)" />
            </td>
            <td>[clearQueue],[gotoEnd]</td>
            <td>清空隊列,當前執行動作<span style="color:#150ce6; font-weight:bold;">立即完成</span>。後續動作會不再執行。</td>
            <td>
                <input type="button" id="stop_false_true" value="stop(false,true)" />
            </td>
            <td>[clearQueue],[gotoEnd]</td>
            <td>不清空隊列,當前執行動作<span style="color:#150ce6; font-weight:bold;">立即完成</span>。後續動作會立即執行。</td>
        </tr>
        <tr>
            <td><input type="button" id="stop_true_false" value="stop(true,false)" /></td>
            <td>[clearQueue],[gotoEnd]</td>
            <td>清空隊列,當前執行動作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。後續動作會不再執行。</td>
            <td><input type="button" id="stop_false_false" value="stop(false,false)" /></td>
            <td>[clearQueue],[gotoEnd]</td>
            <td>不清空隊列,當前執行動作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。後續動作會立即執行。</td>
        </tr> 

    </table> 
    <div class="bg" id="Div1">
        <div class="line" id="linetop"></div>
    </div>
</body>
View Code

我們可以看到如下整理結果

方法參數說明方法參數說明
  清空隊列,當前執行動作立即停止。後續動作會不再執行。 等同於:stop(false,false)
[clearQueue] 清空隊列,當前執行動作立即停止。後續動作會不再執行。 [clearQueue] 不清空隊列,當前執行動作立即停止。後續動作會立即執行。
[clearQueue],[gotoEnd] 清空隊列,當前執行動作立即完成。後續動作會不再執行。 [clearQueue],[gotoEnd] 不清空隊列,當前執行動作立即完成。後續動作會立即執行。
[clearQueue],[gotoEnd] 清空隊列,當前執行動作立即停止。後續動作會不再執行。 [clearQueue],[gotoEnd] 不清空隊列,當前執行動作立即停止。後續動作會立即執行。

 

 

 

 

 

四、筆記

在jQuery的較高版本中stop還有一種用法,就是和隊列(queue)配合使用。對於這種用法,我目前還不是還不是屬性,這裏無法給出一個好的解釋。

留待以後在慢慢研究了。

目前stop的用法相信也足夠我們只用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章