JQuery中stop方法的使用

在前台页面开发中有时候我们会需要一些比较酷的效果,这个时候使用JQuery中的动画来实现便显得非常的简单。

最近在工作中碰到了一个页面元素移动的效果,这是个简单的页面效果也非常容易实现。

在使用中用到了一个停止动画的方法"stop()",以前只是用也没有过多的关注。

这几天再次碰到,便翻开文档测试了一番,竟也有了一些新的认识。对这个方法有了全新的了解,在这里把我的测试记录下来。

在JQuery文档中对这个方法的解释是这样的:

一、概述

停止所有在指定元素上正在运行的动画。

如果队列中有等待执行的动画(并且clearQueue没有设为true),他们将被马上执行。

二、没有参数

场景模拟

假设有一个元素需要在背景中进行移动,然后回到起始位置。页面中有三个按钮,分别负责“开始移动”,“采用了stop方法的回归”,“没有采用stop方法的回归”。

整体页面效果图如下:

测试代码和效果

 1 <script type="text/javascript">
 2
 3         $(function () {
 4             //向右移动600px
 5             $("#Button1").click(function () {
 6                 $("#move").stop().animate({ left: 610 }, 3000);
 7             });
 8             //立即往回移动(有stop)
 9             $("#Button2").click(function () {
10                 $("#move").stop().animate({ left: 10 }, 3000);
11             });
12             //移动完600px,才会往回移动(没有stop)
13             $("#Button3").click(function () {
14                 $("#move").animate({ left: 10 }, 3000);
15             });
16
17         });
18     </script>

通过测试我们不难发现

有stop,当蓝色方块在向右侧移动的时候,点击按钮,方块会立即往回返(向左侧移动)。

没有stop,当蓝色方块在向右侧移动的时候,点击按钮,方块会等到完全移动到指定位置后才往回返(向左侧移动)。

测试总结

stop()停止了当前正在执行的动画,并使后续的动画立即得到了执行。

 三、两个参数或者一个参数

查看文档可以知道这个时候参数依次为:[clearQueue],[gotoEnd]  并且都为可选,类型都为Boolean。

clearQueue:如果设置成true,则清空队列。可以立即结束动画。

gotoEnd:让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等。

我们可以挨个进行测试。代码如下:

 1 <style type="text/css">
 2         table, tr, th, td {
 3             margin: 0px;
 4             padding: 5px;
 5             border-collapse: collapse;
 6             border: 1px solid black;
 7         }
 8
 9         .bg {
10             background-color: #8FBC8F;
11             border: 1px solid black;
12             width: 1000px;
13             height: 200px;
14             margin: 10px;
15             position: relative;
16         }
17
18         .line {
19             position: absolute;
20             background-color: #3b9feb;
21         }
22
23         #linetop {
24             top: 10px;
25             left: 10px; /*width:980px;*/
26             height: 5px;
27         }
28     </style>
29     <script type="text/javascript">
30
31         $(function () {
32             //
33
34             var line;
35
36             $("#start").click(function () {
37                 line = $("#linetop").animate({ width: 980 }, 3000)
38                                     .animate({ height: 180 }, 3000);
39             });
40
41
42             $("#stop").click(function () {
43                 $("#linetop").stop();
44             });
45
46             $("#stop_true").click(function () {
47                 $("#linetop").stop(true);
48             });
49
50             $("#stop_false").click(function () {
51                 $("#linetop").stop(false);
52             });
53
54
55             $("#stop_true_true").click(function () {
56                 $("#linetop").stop(true, true);
57             });
58
59             $("#stop_true_false").click(function () {
60                 $("#linetop").stop(true, false);
61             });
62
63             $("#stop_false_true").click(function () {
64                 $("#linetop").stop(false, true);
65             });
66
67             $("#stop_false_false").click(function () {
68                 $("#linetop").stop(false, false);
69             });
70
71         });
72     </script>

 1 <body><input type="button" id="start" value="动作开始" />
 2     <table>
 3         <tr>
 4             <th>方法</th>
 5             <th>参数</th>
 6             <th>说明</th>
 7             <th>方法</th>
 8             <th>参数</th>
 9             <th>说明</th>
10         </tr>
11         <tr>
12             <td>
13                 <input type="button" id="stop" value="stop()" /></td>
14             <td></td>
15             <td colspan="4">清空队列,当前执行动作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。后续动作会不再执行。
16                 等同于:<span style="color:#ff6a00; font-weight:bold;">stop(false,false)</span>
17             </td>
18         </tr>
19         <tr>
20             <td>
21                 <input type="button" id="stop_true" value="stop(true)" /></td>
22             <td>[clearQueue]</td>
23             <td>清空队列,当前执行动作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。后续动作会不再执行。</td>
24             <td>
25                 <input type="button" id="stop_false" value="stop(false)" /></td>
26             <td>[clearQueue]</td>
27             <td>不清空队列,当前执行动作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。后续动作会立即执行。</td>
28         </tr>
29         <tr>
30             <td>
31                 <input type="button" id="stop_true_true" value="stop(true,true)" />
32             </td>
33             <td>[clearQueue],[gotoEnd]</td>
34             <td>清空队列,当前执行动作<span style="color:#150ce6; font-weight:bold;">立即完成</span>。后续动作会不再执行。</td>
35             <td>
36                 <input type="button" id="stop_false_true" value="stop(false,true)" />
37             </td>
38             <td>[clearQueue],[gotoEnd]</td>
39             <td>不清空队列,当前执行动作<span style="color:#150ce6; font-weight:bold;">立即完成</span>。后续动作会立即执行。</td>
40         </tr>
41         <tr>
42             <td><input type="button" id="stop_true_false" value="stop(true,false)" /></td>
43             <td>[clearQueue],[gotoEnd]</td>
44             <td>清空队列,当前执行动作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。后续动作会不再执行。</td>
45             <td><input type="button" id="stop_false_false" value="stop(false,false)" /></td>
46             <td>[clearQueue],[gotoEnd]</td>
47             <td>不清空队列,当前执行动作<span style="color:#ff6a00; font-weight:bold;">立即停止</span>。后续动作会立即执行。</td>
48         </tr>
49
50     </table>
51     <div class="bg" id="Div1">
52         <div class="line" id="linetop"></div>
53     </div>
54 </body>

我们可以看到如下整理结果

方法 参数 说明 方法 参数 说明
  清空队列,当前执行动作立即停止。后续动作会不再执行。 等同于:stop(false,false)
[clearQueue] 清空队列,当前执行动作立即停止。后续动作会不再执行。 [clearQueue] 不清空队列,当前执行动作立即停止。后续动作会立即执行。
[clearQueue],[gotoEnd] 清空队列,当前执行动作立即完成。后续动作会不再执行。 [clearQueue],[gotoEnd] 不清空队列,当前执行动作立即完成。后续动作会立即执行。
[clearQueue],[gotoEnd] 清空队列,当前执行动作立即停止。后续动作会不再执行。 [clearQueue],[gotoEnd] 不清空队列,当前执行动作立即停止。后续动作会立即执行。

四、笔记

在jQuery的较高版本中stop还有一种用法,就是和队列(queue)配合使用。对于这种用法,我目前还不是还不是属性,这里无法给出一个好的解释。

留待以后在慢慢研究了。

目前stop的用法相信也足够我们只用了。

时间: 2024-10-16 01:24:38

JQuery中stop方法的使用的相关文章

JQuery中$.ajax()方法参数详解

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

“jquery中each方法和选择器”的学习笔记

<head> <title></title> <script src="jquery-1.4.2.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { //alert($("div").text()); //对数组元素使用匿名函数进行逐个处理.

jQuery中attr()方法用法实例

本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元素指定属性的属性值. 代码如下: $(selector).attr(name) 参数列表: 参数 描述 name 定义要获取其值的属性名称. 实例代码: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="

jQuery中eq()方法用法

这篇文章主要介绍了jQuery中eq()方法用法,实例分析了eq()方法的功能.定义及获取匹配元素集上的相应位置索引元素的使用技巧,需要的朋友可以参考下 本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代码如下: $(selector).eq(index) 参数列表: 参数 描述 index 定义元素在元素集中的索引,从零开始的.      如果是

JQuery中$.ajax()方法参数

url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持. timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设 置. async:要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求. 如果需要发送同步请求,请将此选项

jQuery中animate()方法以及$(&#39;body&#39;).animate({&quot;scrollTop&quot;:top})不被Firefox支持问题的解决

$("body").animate({"scrollTop":top}): 只被chrome支持,而不被Firefox支持 $("html").animate({"scrollTop":top}): 只被Firefox支持,而不被chrome支持. 如果想让这段js被chrome和Firefox都支持的话,应该这样: $("html,body").animate({"scrollTop"

锋利的jQuery读书笔记---jQuery中Ajax--load方法

第一个Ajax例子 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <input type="button" value="Ajax提交" onclick="Ajax();&qu

论jQuery中animate方法的回调问题

今日在使用jQuery中animate方法的回调函数时,发现当回调函数内嵌animate方法时,并且将这些放在循环中时会出现:先是外部animate被执行,然后再是内部animate被执行.经过多次试验以及网上查询,发现js引擎单线程的,异步事件只能排队等候执行,而不能同时执行.而animate方法是采用计时器和延时器进行闭包而成的方法,相应的计时器和延时器是异步的,故animate方法也是异步执行的.这样就可以解释了:

jQuery中eq()方法用法实例

本文实例讲述了jQuery中eq()方法用法.分享给大家供大家参考.具体分析如下: 此方法能够获取匹配元素集上的相应位置索引的元素. 匹配元素集上元素的位置索引是从0开始的. 语法结构: 复制代码 代码如下: $(selector).eq(index) 参数列表: 参数 描述 index 定义元素在元素集中的索引,从零开始的. 如果是负数则从最后一个元素往回计数. 越界无效. 实例代码: 实例一: 复制代码 代码如下: <!DOCTYPE HTML> <html> <head

关于Jquery中ajax方法data参数用法的总结

jquery手册描述: data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQuery 将自动为不同值对应同一个名称.如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'. 示例: $.ajax({    type: "POST",    u