我将mouseenter / mouseleave事件绑定到一个元素(只是一个图像),该元素又执行两个功能。我的问题是我希望两个功能之一仅在第一个mouseenter上触发一次。

在第一个mouseenter上又发生了两件事,在第二个mouseneter上只有一件事发生了。

$(.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函数移至该块之外,并移至其自己的单独的鼠标enter / leave块中,则functionSwapImageBack()仅触发一次(即,.one正在删除两个代码块的事件)。

不太确定如何解决此问题,但感谢您的帮助!

最佳答案

使用命名空间事件尝试此操作,该事件仅删除具有命名空间的特定事件处理程序。

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

09-25 16:11