jQuery два события мыши, запустить одну функцию ОДИН РАЗ - PullRequest
2 голосов
/ 24 января 2012

Я связал событие mouseenter / mouseleave с элементом (просто изображением), который, в свою очередь, выполняет две функции.Моя проблема заключается в том, что я хочу, чтобы одна из двух функций запускалась ТОЛЬКО один раз при первом вводе мыши.

То есть при первом вводе мыши происходят две вещи, а во втором - только одна вещь.

$(.bubbles).mouseenter(function(){
    functionSwapImage();                         //this should happen everytime
}).mouseleave(function(){
    functionSwapImageBack();                     //this should happen everytime
    $(".bubbles").one("mouseleave", function(){
        myFunction();                            //this should happen once!
    });
});

РЕДАКТИРОВАТЬ: http://jsfiddle.net/Am5ZC/

Если я переместить функцию .one за пределы этого блока и в свой отдельный блок ввода / вывода мыши, то functionSwapImageBack() срабатывает только один раз (т. Е. .Oneудаляет событие для обоих блоков кода).

Не совсем уверен, как это сделать, но спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 24 января 2012

Попробуйте сделать это, используя события в пространстве имен, которые удаляют только тот конкретный обработчик событий с пространством имен.

$(".bubbles").mouseenter(function(){
    functionSwapImage();                         //this should happen everytime
}).mouseleave(function(){
    functionSwapImageBack();                     //this should happen everytime
}).one("mouseleave.onlyonce", function(){
    myFunction();                            //this should happen once!
});
1 голос
/ 24 января 2012

Это должно работать:

$('.bubbles').one('mouseleave', myFunction)
.mouseenter(functionSwapImage)
.mouseleave(functionSwapImageBack);

Не знаю, хотите ли вы связать его с событием mouseleave или mouseenter.

Обновление: Кажется, он работает правильно в jQuery 1.7 , но не в jQuery 1.7.1 .Кажется, это ошибка.

...