2012-05-12 2 views
1

Нет ошибок, но я хотел бы узнать лучший совет, чтобы справиться с этим конфликтом или сделать это правильно. Как остановить этот эффект цикла.mouseenter, mouseleave и overlay

Вот простой пример: http://jsfiddle.net/aC5bV/

$('a').on({ 
    mouseenter:function(){ 
    $tooltip=$('#tooltip'); 
    $tooltip.animate({ 
     top:20, 
     left:20 
    },300); 
    }, 
    mouseleave:function(){ 
    $tooltip=$('#tooltip'); 
    $tooltip.animate({ 
     top:50, 
     left:50 
    },300); 
    } 
});​ 
+1

Возможный дубликат [jQuery: остановить повторение анимации при нескольких опрокидываниях?] (Http://stackoverflow.com/questions/9113568/jquery-stop-repeating-animation-on-multiple-rollovers) и [Остановка цикла анимации jQuery ] (http://stackoverflow.com/q/9277084/218196) и другие ... –

+0

да еще одна остановка() вопрос, но здесь мне нужно закончить первый анимированный режим, хорошее начало, но не идеально ... –

+0

... просто необходимо добавить полный тест var на завершение! Я собираюсь сделать это и опубликовать его! –

ответ

0

Наконец, я нашел, что это (от here)

$(document).mouseover(function(e) { 
    if (e.target == $("a").get(0) || e.target == $("#tt").get(0)) { 
     $("#tt").animate({top:0,left:0},300); 
    } 
    else { 
     $("#tt").stop().animate({top:200,left:200},300); 
    } 
}); 

http://jsfiddle.net/aC5bV/13/

Если это улучшаемый, я буду принимать лучше ответ !

1

Как остановить этот эффект цикла?

.stop(). Пожалуйста, проверьте руководство по параметрам наилучшего эффекта.

jsFiddle Demo

$('a').on({ 
    mouseenter:function(){ 
    var $tooltip=$('#tooltip'); 
    $tooltip.stop().animate({ 
     top:20, 
     left:20 
    },300); 
    }, 
    mouseleave:function(){ 
    var $tooltip=$('#tooltip'); 
    $tooltip.stop().animate({ 
     top:50, 
     left:50 
    },300); 
    } 
});​ 

Кроме того, вы должны использовать var при определении переменной, в противном случае you get a global variable. И это dooms the whole world и убивает котят.

+1

rofl. убивает котят. но вам не нужно определять var для этого, так как вы используете его только один раз :) – OptimusCrime

+0

@OptimusCrime Это правда. Но если вы его определите, определите его правильно. – kapa

+0

http://jsfiddle.net/aC5bV/3/ Я знаю (и забыл) stop(), stop (true), stop (true, true), но это не идеальный, уродливый курсор мигает, а на mouseenter анимат doesn ' t закончить ... или я что-то забыл? –

1

использование стоп-функция() ...

$('a').on({ 
    mouseenter:function(){ 
    $tooltip=$('#tooltip'); 
    $tooltip.stop().animate({ 
     top:20, 
     left:20 
    },300); 
    }, 
    mouseleave:function(){ 
    $tooltip=$('#tooltip'); 
    $tooltip.stop().animate({ 
     top:50, 
     left:50 
    },300); 
    } 
});