.stop( [clearQueue ] [, jumpToEnd ] )返回值: jQuery
描述: 停止匹配元素上当前正在运行的动画。
-
添加版本: 1.2.stop( [clearQueue ] [, jumpToEnd ] )
-
添加版本: 1.7.stop( [queue ] [, clearQueue ] [, jumpToEnd ] )
当在元素上调用 .stop() 时,当前正在运行的动画(如果有)会立即停止。例如,如果一个元素正在使用 .slideUp() 隐藏,而此时调用了 .stop(),那么该元素现在仍然会显示,但高度会是之前高度的一部分。不会调用回调函数。
如果对同一个元素调用了多个动画方法,后面的动画将被放置在该元素的效果队列中。这些动画只有在第一个动画完成之后才会开始。当调用 .stop() 时,队列中的下一个动画将立即开始。如果 clearQueue 参数的值为 true,则队列中剩余的动画将被移除,并且永远不会运行。
如果 jumpToEnd 参数的值为 true,则当前动画将停止,但元素将立即获得每个 CSS 属性的目标值。在我们上面的 .slideUp() 示例中,元素将立即隐藏。如果提供了回调函数,则立即调用它。
从 jQuery 1.7 开始,如果第一个参数以字符串形式提供,则只会停止由该字符串表示的队列中的动画。
.stop() 方法的用处在我们需要在 mouseenter 和 mouseleave 上对元素进行动画时很明显。
|
1
2
3
4
|
|
我们可以通过在链中添加 .stop(true, true) 来创建一个不错的淡入淡出效果,而不会出现多个排队动画的常见问题。
|
1
2
3
4
5
|
|
切换动画
从 jQuery 1.7 开始,使用 .stop() 过早地停止切换动画将触发 jQuery 的内部效果跟踪。在以前的版本中,在切换动画完成之前调用 .stop() 方法会导致动画丢失其状态(如果 jumpToEnd 为 false)。任何后续动画都将从新的“中途”状态开始,有时会导致元素消失。要观察新的行为,请参见下面的最后一个示例。
可以通过将属性 $.fx.off 设置为 true 来全局停止动画。这样做时,所有动画方法在调用时都会立即将元素设置为其最终状态,而不是显示效果。
示例
单击“Go”按钮一次以启动动画,然后单击“STOP”按钮以将其停止在当前位置。另一种选择是单击多个按钮将它们排队,然后查看停止只是杀死了当前正在播放的按钮。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
|
演示
单击 slideToggle 按钮以启动动画,然后在动画完成之前再次单击。动画将从保存的起点切换到另一个方向。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
|