jQuery中animate动画队列的停止和清除

jQuery中animate动画队列的停止和清除,转载自web前端开发

.finish([queue ])
描述: 停止当前正在运行的动画,删除所有排队的动画,并完成匹配元素所有的动画
当.finish()在一个元素上被调用,立即停止当前正在运行的动画和所有排队的动画(如果有的话),并且他们的CSS属性设置为它们的目标值(愚人码头注:就是所有动画的目标值)。所有排队的动画将被删除。

如果第一个参数提供,该字符串表示的队列中的动画将被停止。

.finish()方法和.stop(true, true)很相似,.stop(true, true)将清除队列,并且目前的动画跳转到其最终值。但是,不同的是,.finish() 会导致所有排队的动画的CSS属性跳转到他们的最终值。

动画可能因为全局的$.fx.off 属性设置为 true而停止。当这样做时,所有动画方法将立即设置元素的css属性为其最终调用后的状态,而不是显示动画效果。

例子:

Click the Go button once to start the animation, and then click the other buttons to see how they affect the current and queued animations.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE html>
<html>
<head>
<style>.box {
position: absolute;
top: 10px;
left: 10px;
width: 15px;
height: 15px;
background: black;
}
#path {
height: 244px;
font-size: 70%;
border-left: 2px dashed red;
border-bottom: 2px dashed green;
border-right: 2px dashed blue;
}
button {
width: 12em;
display: block;
text-align: left;
margin: 0 auto;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div class="box"></div>
<div id="path">
<button id="go">Go</button>
<br>
<button id="bstt" class="b">.stop(true,true)</button>
<button id="bcf" class="b">.clearQueue().finish()</button>
<br>
<button id="bstf" class="b">.stop(true, false)</button>
<button id="bcs" class="b">.clearQueue().stop()</button>
<br>
<button id="bsff" class="b">.stop(false, false)</button>
<button id="bs" class="b">.stop()</button>
<br>
<button id="bsft" class="b">.stop(false, true)</button>
<br>
<button id="bf" class="b">.finish()</button>
</div>

<script>
var horiz = $("#path").width() - 20,
vert = $("#path").height() - 20;

var btns = {
bstt: function () {
$("div.box").stop(true, true);
},
bs: function () {
$("div.box").stop();
},
bsft: function () {
$("div.box").stop(false, true);
},
bf: function () {
$("div.box").finish();
},
bcf: function () {
$("div.box").clearQueue().finish();
},
bsff: function () {
$("div.box").stop(false, false);
},
bstf: function () {
$("div.box").stop(true, false);
},
bcs: function () {
$("div.box").clearQueue().stop();
}
};


$("button.b").on("click", function () {
btns[this.id]();
});

$("#go").on("click", function () {
$(".box")
.clearQueue()
.stop()
.css({
left: 10,
top: 10
})
.animate({
top: vert
}, 3000)
.animate({
left: horiz
}, 3000)
.animate({
top: 10
}, 3000);
});
</script>

</body>
</html>

具体演示效果参看原网页

文章目录
,