我的问题:
我有几个(告诉10个)元素。将它们中的每一个悬停在动画上执行一些功能。 我想这样做,如果其中一个元素的函数(和动画)正在运行,则悬停其他一些元素不会执行该函数。
例如:我徘徊了元素'2'。动画开始。当动画持续时,我将元素'3','4'和'5'悬停。鼠标光标保持在'5'。
我需要什么,当元素'2'的动画结束,光标停留在'5'时,五个动画自动开始。
我做到了:
var blocked = 0;
$(".my_element").live('hover',function(){
if(blocked == 0){
blocked = 1;
$(this).find('.content').animate({left:"-=100px"}, function() {
blocked = 0;
});
}, function(){
});
但是在功能完成后,下一个功能才会启动,直到我摆动鼠标。有人可以帮忙吗? THX
答案 0 :(得分:3)
我认为你的代码非常好,但是当动画停止时你想在当前悬停的元素上抛出一个事件。这应该再次触发动画。我想你也想排除以前的动画元素。
这样的事情:
var blocked, lastHovered, previous;
$(".my_element").live('hover', function(){
lastHovered = this;
if (!blocked && this != previous){
blocked = true;
previous = this;
$('.content').animate({left:"-=100px"}, 1000, function() {
blocked = false;
if (lastHovered) {
$(lastHovered).trigger("mouseenter");
}
});
}
}, function() {
lastHovered = false;
});