jQuery queue()是一个非常有用的方法,可以让你同时执行多个动画或操作,从而增强用户体验。下面介绍jQuery queue()方法的文档和两个实际示例:
jQuery queue()方法
jQuery queue()方法用于操作动画队列。动画队列通常用于让多个动画依次执行。jQuery queue()方法同时还支持让多个自定义函数按照一定顺序执行。
语法
$(selector).queue(function)
$(selector).queue(queueName,function)
$(selector).queue(queueName)
$(selector).dequeue()
$(selector).clearQueue()
参数说明:
- function:需要入队列的函数
- queueName:字符串类型,用于命名队列
- dequeue():触发队列中函数的执行
- clearQueue():清除队列中未执行的函数
示例1:jQuery动画队列
在这个例子中,我们将创建一个动画队列。当一个小球被点击时,它将开始向右移动,同时其他小球将开始进行不同的动画。这些动画将放在队列中,以便它们将按照顺序执行。
HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery queue() demo</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<style>
#box {
width: 100px;
height: 100px;
background-color: #ccc;
position: relative;
}
.ball {
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
top: 40px;
background-color: #0099FF;
animation: bounce 2s ease infinite;
}
.ball2 {
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
top: 0;
left: 50px;
background-color: #FFCCCC;
}
.ball3 {
width: 20px;
height: 20px;
border-radius: 50%;
position: absolute;
top: 80px;
left: 80px;
background-color: #FF99CC;
}
@keyframes bounce {
from {top: 0;}
to {top: 80px;}
}
</style>
</head>
<body>
<div id="box">
<div class="ball"></div>
<div class="ball ball2"></div>
<div class="ball ball3"></div>
</div>
<script>
$(document).ready(function(){
$(".ball").click(function(){
$(this).animate({left:'100px'})
.animate({top:'100px'})
.animate({left:'0px'})
.animate({top:'40px'});
$(".ball2").delay(400).queue(function(){
$(this).animate({left:'100px'},1000);
$(this).dequeue();
}).fadeIn().fadeOut();
$(".ball3").delay(800).queue(function(){
$(this).animate({left:'100px'},1000);
$(this).dequeue();
}).fadeIn().fadeOut();
});
});
</script>
</body>
</html>
在上面的例子中,我们为每个小球设置了不同的动画。每个动画都是使用jQuery的animate()方法创建的。然后我们将动画放到队列中。我们在小球被点击时开始执行队列中的动画。
示例2:自定义的函数队列
在这个例子中,我们将创建一个自定义函数队列。当点击按钮时,将按照顺序调用这些函数。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery queue() demo</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<button id="start">开始</button>
<div id="result"></div>
<script>
// 创建自定义函数队列
$("button").click(function() {
$("#result").html("");
$("div:eq(0)").queue("steps", [
function() {
$("#result").append("<div>步骤1:获取数据</div>");
$(this).dequeue("steps");
},
function() {
$("#result").append("<div>步骤2:处理数据</div>");
$(this).dequeue("steps");
},
function() {
$("#result").append("<div>步骤3:显示结果</div>");
$(this).dequeue("steps");
},
function() {
$("#result").append("<div>已完成</div>");
$(this).dequeue("steps");
}
])
.dequeue("steps"); // 开始执行自定义队列
});
</script>
</body>
</html>
在上面的代码中,我们定义了一个自定义函数队列。它包含了四个步骤:获取数据、处理数据、显示结果和完成。当按钮被点击时,我们开始执行该队列。每个步骤都是一个function返回一个字符串,用于标识该步骤,并将其添加到结果div中。调用$(this).dequeue(“steps”)以让队列依次执行。