嵌套的jquery队列不运行

时间:2013-10-05 12:58:39

标签: jquery

为什么console.dir行永远不会运行?我可以嵌套队列吗?

  //Rotate letter W to M of Wovi.es
  $(".logo a span").delay(5000).queue(function(){
    $(this).addClass("rotate").delay(400).queue(function(){
      //$(this).removeClass("rotate");
      console.dir($(this)); // This never runs
    });
  });

明显的解决方法我可以看到只有两个单独的函数,如:

  //Rotate letter W to M of Wovi.es
  $(".logo a span").delay(5000).queue(function(){
    $(this).addClass("rotate");
  });
  $(".logo a span").delay(5400).queue(function(){
    $(this).removeClass("rotate");
  });

但为什么不先工作?

P.S。实际上我的第二个代码也不起作用。

2 个答案:

答案 0 :(得分:0)

$("#test").delay(5000).queue(function(){
    var $this = $(this);

    $(this).addClass("rotate").delay(1400).queue(function(){
        $this.removeClass('rotate');
    }).dequeue();
});

http://jsfiddle.net/BhpfX/

注意我在内部延迟时将其更改为1400,因此更明显。

答案 1 :(得分:0)

处理多个队列时,

dequeue是关键。

来自jQuery docs:

当调用jQuery.dequeue()时,队列中的下一个函数将从队列中删除,然后执行。该函数应该(直接或间接)导致调用jQuery.dequeue(),以便序列可以继续。

$('.logo').delay(500).queue(function(){
    $(this).addClass('rotate').delay(1000)
      .queue(function(next) {
       alert('working');      
    }).dequeue();
});

Working DEMO