我在使用.stop()
阻止函数排队时遇到了一些问题。如果我使用.stop()
或其变体,则函数会在hover:out
之后死亡,并且不会重新启动。
您可以在此处查看我的代码和来源:http://joepolitic.com/zkmpract.html。只有最后一个菜单项(c)上有.stop()
,其余的还没有。
$('li.contact').hover(
function() {
$(this).stop().toggleClass('li contactb', 800);
},
function() {
$(this).stop().toggleClass('li contactb', 800);
}
);
答案 0 :(得分:2)
问题是由toggleClass
处理持续时间的方式引起的。在动画期间,height
直接在元素上设置。动画完成后,将删除height
并添加该类。当动画stop
成熟时,height
将直接保留在覆盖css类的元素上。这就是为什么它似乎不起作用,因为如果有内联样式,添加和删除类不会影响高度。
我能想到解决此问题的唯一方法是不使用toggleClass
并直接使用animate
。如果您不想设置初始高度,可以在动画之前将高度保存在data
中,并在想要将其设置回时将其拉出:
$("div").hover(function(){
var $this=$(this);
$this.data("height",$this.height());
$this.stop().animate({"height":"200px"},1000);
},function(){
var $this=$(this);
$this.stop().animate({"height":$this.data("height")},1000);
});