2012-03-12 74 views
1

结束之前,Javascript监听器没有触发,我希望!如果在jquery .slideDown()动画

即时通讯的问题是,我有一个('itemID')。mouseover,它为菜单框启动jQuery向下滑动动画。 问题是,如果鼠标在slideDown()amination结束之前离开原始项目(本例中为文本链接),则不会调用.mouseleave函数。

它工作正常否则!

这是即时通讯使用的是什么:(menu14是文字链接,FunctionsMenu3是包含菜单项隐藏DIV)

$('#menu14').mouseover(function() { 
    $('#FunctionsMenu3').slideDown('fast', function() { 
    // Animation complete. 
    }); 
}); 

$('#FunctionsMenu3').mouseleave(function() { 
    $('#FunctionsMenu3').slideUp('fast', function() { 
    // Animation complete. 
    }); 
}); 

这似乎对我来说,JS不能被解雇,是因为它的忙做幻灯片... 网站可以看到http://www.impero-classroom-management.com 在此先感谢!

+0

'mouseleave'只是IE浏览器(虽然这是通过jQuery修复的)。你有没有尝试过使用'hover'构造呢?见:http://api.jquery.com/hover/ – m90 2012-03-12 12:38:44

回答

0

在mouseleave上,尝试使用.stop()取消当前动画。

$('#menu14').hover(
    function() { 
    $('#FunctionsMenu3').slideDown('fast'); 
    }, 
    function() { 
    $('#FunctionsMenu3').stop().slideUp('fast'); 
    } 
); 
+0

嗨克里斯托夫! 这更接近我想要的,它的作品99%,但是,如果我徘徊然后离开很快,该div将只下一次滑到他身高,它被取消了! IE浏览器,如果我躲过了,然后离开时,说一半下来,它会完全关闭,但下一次它只会下降到该级别......多么奇怪! – 2012-03-12 17:08:38

+0

两个函数都有stop() – Straseus 2012-04-10 08:58:57

0

嗯,我最终通过没有动画的下拉,只有向上滑动来解决它。

不是一个修复,但它是我所能做的!

$('#FunctionsMenu5').mouseleave(function() { 
    $('#FunctionsMenu5').slideUp('fast', function() { 
    // Animation complete. 
    }); 
}); 
$('#menu15').mouseover(function() { 
    $('#FunctionsMenu5').show(); 
});