Mouseenter продолжает стрелять из-за плагина Wiggle - PullRequest
0 голосов
/ 07 марта 2012

Возможно, это просто для кого-то. Мне бы хотелось, чтобы этот код плагина запускал единицу, когда мышь наводится на элемент, покачивая элемент 3 или 4 раза (или что-то еще указано), затем останавливается ... однако он просто продолжает срабатывать

вот скрипка: http://jsfiddle.net/ZKVMk/7/

Я использую этот маленький плагин покачивания: http://labs.wondergroup.com/demos/mini-ui/index.html

Кажется, что плагин просто заставляет mouseenter оставаться активным.

идеи:

  • каким-то образом переместить вызов в функцию покачивания за пределы мышиного центра, чтобы он срабатывал только один раз?

  • использовать функцию обратного вызова плагина, чтобы сообщить мышиному центру, что он должен остановиться?

  • как-нибудь включить bind () или unbind ()?

большое спасибо!

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Проблема в том, что когда элемент перемещается, он повторно запускает событие MouseEnter в Firefox и IE, поэтому самый простой способ исправить это (IMHO, конечно) - просто вставить переменную, которая может быть сброшена, что предотвращает метод покачивания вызывается несколько раз.

$(function() {
    var wiggled = false;

    $('#tata').mouseover(function() { 
        if(!wiggled) {
            $(this).wiggle({
                speed: 60,
                wiggles: 3,
                travel: 5,
            });
            //output
            var el = $('#output');
            var n = + el.text();
            el.text(++n);

            wiggled = true;
        }
    }).mouseout(function(e) {        
        wiggled = false;
    });
});

Обновление : я должен добавить, что я мог проверить это только в FF, IE и Chrome могут вести себя по-разному, но я не ожидаю, что они будут.

0 голосов
/ 07 марта 2012

попробуйте ввести это также

$('#tata').mouseout(function() {        
    $(this).stop();
});

Это остановит все анимации, а текущая анимация будет завершена

...