.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
|
|