我将一个mouseenter / mouseleave事件绑定到一个元素(只是一个图像),然后执行两个函数。我的问题是我希望两个函数中的一个只在第一个mouseenter上触发一次。
也就是在第一个mouseenter上发生了两件事,在第二个鼠标上只发生了一件事。
$(.bubbles).mouseenter(function(){
functionSwapImage(); //this should happen everytime
}).mouseleave(function(){
functionSwapImageBack(); //this should happen everytime
$(".bubbles").one("mouseleave", function(){
myFunction(); //this should happen once!
});
});
如果我将.one
函数移动到该块之外并进入其自己单独的鼠标进入/离开块,则functionSwapImageBack()
仅触发一次(即.one正在删除两个块的事件)代码)。
不确定如何解决这个问题,但感谢您的帮助!
答案 0 :(得分:1)
这应该有效:
$('.bubbles').one('mouseleave', myFunction)
.mouseenter(functionSwapImage)
.mouseleave(functionSwapImageBack);
不知道您是否要将其绑定到mouseleave
或mouseenter
事件。
更新:它似乎在jQuery 1.7中正常运行,但在jQuery 1.7.1中无效。这似乎是一个错误。
答案 1 :(得分:1)
使用命名空间事件尝试此操作,该事件仅删除具有命名空间的特定事件处理程序。
$(".bubbles").mouseenter(function(){
functionSwapImage(); //this should happen everytime
}).mouseleave(function(){
functionSwapImageBack(); //this should happen everytime
}).one("mouseleave.onlyonce", function(){
myFunction(); //this should happen once!
});