首页 > 为何 jQuery 中的 queue() 需要 dequeue() 来让后续代码执行?

为何 jQuery 中的 queue() 需要 dequeue() 来让后续代码执行?

<!DOCTYPE html>
<html>
<head>
  <style>
    div { margin:3px; width:40px; height:40px;
      position:absolute; left:0px; top:30px;
      background:green; display:none; }
      div.newcolor { background:blue; }
    </style>
    <script type="text/javascript" src="jQuery/jquery-1.12.2.min.js"></
    </script>
  </head>
  <body>
    Click here...
    <div></div>
    <script>
      $(document.body).click(function () {
        $("div").show("slow");
        $("div").animate({left:'+=200'},2000);
        $("div").queue(function () {
          $(this).addClass("newcolor");
          $(this).dequeue();
        });
        $("div").animate({left:'-=200'},500);
        $("div").queue(function () {
          $(this).removeClass("newcolor");
        //$(this).dequeue();
      });
        $("div").slideUp();
      });
    </script>        
  </body>
  </html>

请问为何 jQuery 中的 queue() 需要 dequeue() 来让后续代码执行,而不是 queue() 队列完成后自动执行后续代码?

当注释 $(this).dequeue(); 后,没有执行 $("div").slideUp(); ,而是停止动画;而当恢复 $(this).dequeue(); 后, $("div").slideUp(); 又可成功执行,是当 queue() 队列为空时出现类似卡壳的现象吗?还请各位多多指点,谢谢~

【热门文章】
【热门文章】