【问题标题】:Issues with jQuery queue/dequeue…jQuery 队列/出队问题...
【发布时间】:2015-06-29 20:36:22
【问题描述】:

我使用 jQuery queue/dequeue 编写了一个不能正常工作的函数,但我不知道为什么。看这里:

http://codepen.io/ProfessorSamoff/pen/XbVRKg

如果你看函数的末尾,有一部分被注释掉了:

/*$('.msg').delay(2000, 'timer').queue('timer', function(){ 
 $(this).empty().fadeIn(5).append('GO!');
}).dequeue('timer');*/

注释掉后,脚本运行良好,使用 fadeIn() 函数等从 3 倒数到 1。但是当我取消注释最后一部分时,该函数开始从 2 而不是 3 开始计数,而 fadeIn()时间已关闭。

我在这里缺少什么?这是一个蹩脚的错误还是队列/出队功能本身就有问题?

/*var go = Math.floor(Math.random() * 5000) + 500;
console.log(go);*/

$('.start').click(function() {
   $('.start').remove();
   $('.msg').delay(2000, 'timer').queue('timer', function(){ 
     $(this).empty().fadeIn(200).append('3').delay(1000).fadeOut(500);
   }).dequeue('timer');

   $('.msg').delay(2000, 'timer').queue('timer', function(){ 
      $(this).empty().fadeIn(200).append('2').delay(1000).fadeOut(500);
   }).dequeue('timer');

   $('.msg').delay(2000, 'timer').queue('timer', function(){ 
     $(this).empty().fadeIn(200).append('1').delay(1000).fadeOut(500);
   }).dequeue('timer');
   
/*$('.msg').delay(2000, 'timer').queue('timer', function(){ 
     $(this).empty().fadeIn(5).append('GO!');
   }).dequeue('timer');*/
});
body {
   font-family: Arial, sans-serif;
   margin: 3em;
}
.start {
   display: block;
   margin: 0 auto;
   padding: 1em 2em 0.8em 1.9em;
   font-weight: bold;
   background: limegreen;
   border: 1px solid #777;
   border-radius: 10px;
}
.start:hover {
   background: lightgreen;
}
.msg {
   text-align: center;
   font-size: 3em;
   font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="start">Start</button>
<p class="msg"></p>

【问题讨论】:

  • 请在此处发布您的代码,而不仅仅是 codepen 的链接。
  • 抱歉——不知道这个!谢谢。
  • 注释掉的函数中的代码相当于 $(this).text('GO!').fadeIn(5) 我怀疑这不是你的意思。
  • 我正在尝试创建一种最简单的方法,在一个 HTML 元素中从 3 (3-2-1) 开始倒计时,然后以单词“GO!”结束
  • 这往往会破坏此功能。

标签: javascript jquery timer queue deque


【解决方案1】:
/*var go = Math.floor(Math.random() * 5000) + 500;
console.log(go);*/

$('.start').click(function() {

   $('.start').remove();
   $('.msg').delay(2000, 'timer').queue('timer', function(next){ 
     $(this).empty().fadeIn(200).append('3').delay(1000).fadeOut(500);
     next();
   })

   $('.msg').delay(2000, 'timer').queue('timer', function(next){ 
      $(this).empty().fadeIn(200).append('2').delay(1000).fadeOut(500);
      next();
   })

   $('.msg').delay(2000, 'timer').queue('timer', function(next){ 
     $(this).empty().fadeIn(200).append('1').delay(1000).fadeOut(500);
     next();
   })

$('.msg').delay(2000, 'timer').queue('timer', function(next){ 
     $(this).empty().fadeIn(5).append('GO!');
       next();
   })

.dequeue( 'timer' );
});

在这里试试这个

【讨论】:

  • 是的!谢谢……我也完全明白,这真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2012-06-08
  • 1970-01-01
相关资源
最近更新 更多