为什么我的队列在没有出队的情况下工作?

时间:2017-03-15 09:45:19

标签: javascript jquery

我多次阅读jquery文档,但未能理解dequeue方法。请考虑以下示例:



var div = $(".div");



div.animate({
  height: "200px"
}, 3000).queue(function(){
  console.log("3 seconds passed and I show off without dequeue");  
});

div {
  width: 300px;
  height: 100px;
  background-color: red;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="div"></div>
&#13;
&#13;
&#13;

当您运行此脚本时,您会发现queue内的功能在3秒后触发但我没有dequeued。 jQuery说dequeue将该函数从队列中取出然后执行它。但是如果函数可以在没有出列的情况下执行,那么使用出队的是什么?

1 个答案:

答案 0 :(得分:1)

调用

.dequeue()来保持队列正在执行,如果你有两个动画,如果你不使用它就不会调用第二个。根据你的代码检查下一个例子:第一个div有.dequeue注释,所以只执行一个动画。

var divClass = $(".div");
divClass.animate({
  height: "50px"
}, 500).queue(function(){
 
  //$(this).dequeue();
}).animate({height: "100px"},500);

var div = $("div");
div.animate({
  height: "50px"
}, 500).queue(function(){
  
  $(this).dequeue();
}).animate({height: "100px"},500);
div {
  width: 300px;
  height: 100px;
  background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="div">First DIV</div>
<span>HELLO</span>
<div>Second DIV</div>