.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 开始,如果第一个参数被提供为一个字符串,只有该字符串代表的队列中的动画才会被停止。
当我们需要在 mouseenter 和 mouseleave 事件上为元素添加动画时,.stop() 方法的实用性就显而易见了。
|
1
2
3
4
|
|
我们可以通过在链式调用中添加 .stop(true, true) 来创建一个漂亮的淡入淡出效果,而不会出现多个排队动画的常见问题。
|
1
2
3
4
5
|
|
切换动画
从 jQuery 1.7 开始, 使用 .stop() 提前停止一个切换动画将触发 jQuery 的内部效果跟踪。在以前的版本中,在切换动画完成之前调用 .stop() 方法会导致动画丢失其状态(如果 jumpToEnd 为 false)。任何后续的动画将从一个新的“半途”状态开始,有时会导致元素消失。要观察新行为,请参阅下面的最后一个示例。
可以通过将属性 $.fx.off 设置为 true 来全局停止动画。当这样做时,所有动画方法在调用时将立即将元素设置为最终状态,而不是显示一个效果。
示例
示例 1
单击一次“Go”按钮开始动画,然后单击“STOP”按钮将其停止在当前位置。另一种选择是单击多个按钮将它们排队,然后查看 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
|
|
演示
示例 2
单击“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
|
|