jQuery自定义队列

时间:2010-11-20 00:19:21

标签: jquery animation queue jquery-animate

我要做的是隔离动画,这样我就可以杀死某些动画,而不会影响重要动画。我正在尝试将mouseenter / mouseleave动画添加到队列中,以便在不同的动画开始时我可以将它们杀死。下面的代码没有阻止排队的动画。它的行为类似于动画在队列中积累并播放的默认设置。是什么给了什么?

$('.item').mouseenter(function(){
    $(this).clearQueue("test");
    $(this).queue("test",function(next){        
        $(this).animate({
            height: '250px'
        },500);
    });
    $(this).dequeue("test");
}).mouseleave(function(){
    $(this).clearQueue("test");
    $(this).queue("test",function(next){        
        $(this).animate({
            height: '140px'
        }, 250);
    });
    $(this).dequeue("test");
})

1 个答案:

答案 0 :(得分:1)

这是因为您在"test"队列中运行的功能会立即完成,因此结果是您立即将内容添加到{ {1}}(默认动画)队列,您的fx队列在整个时间内保持为空。

在调用.dequeue()之前它只有一个项目...然后"test"队列有一个新条目,该队列继续构建, 排队你'永远不会清理。它是这样的:

  • fx - 此队列已空
  • $(this).clearQueue("test"); - 将项目添加到$(this).queue("test", ...);队列
  • test - 在$(this).animate({... });队列
  • 上排队动画
  • fx - 启动$(this).dequeue("test");队列,该队列会立即清空,因为test会立即返回。