我要做的是隔离动画,这样我就可以杀死某些动画,而不会影响重要动画。我正在尝试将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");
})
答案 0 :(得分:1)
这是因为您在"test"
队列中运行的功能会立即完成,因此结果是您立即将内容添加到{ {1}}(默认动画)队列,您的fx
队列在整个时间内保持为空。
在调用.dequeue()
之前它只有一个项目...然后"test"
队列有一个新条目,该队列继续构建, 排队你'永远不会清理。它是这样的:
fx
- 此队列已空$(this).clearQueue("test");
- 将项目添加到$(this).queue("test", ...);
队列test
- 在$(this).animate({... });
队列fx
- 启动$(this).dequeue("test");
队列,该队列会立即清空,因为test
会立即返回。