Jquery:等待函数完成

时间:2011-11-21 20:17:22

标签: javascript jquery function block complete

我的问题:

我有几个(告诉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

1 个答案:

答案 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;
  });