jquery一次hover?

什么是让hover函数执行一次然后停止的jquery方法?

.one()没有工作..

$(".button-color-2").hover( function (){ dosmth(); }); 

谢谢

Hover为Mouse Enter和Mouse Leave事件绑定处理程序,并且它本身不是一个事件。 因此,为了获得与Hover相同的效果,您将有两个将触发一次的绑定。

 $(".button-color-2").one("mouseenter mouseleave", function(e){ dosmth(); }); 

如果你想在mouseenter和mouseleave上做不同的事情,那么绑定两个不同的处理程序

 $(".button-color-2").one("mouseenter", function(e){ dosmth1(); }).one("mouseleave", function(e){ dosmth2(); }); 

另一种选择是使用Hover,然后在完成后取消绑定。

 $('.button-color-2').hover(function() { dosmth(); $(this).unbind('mouseenter mouseleave') }); 

如果这不起作用:

 $(".button-color-2").one('hover', function() { dosmth(); }); 

然后尝试这将执行一次hover,然后取消绑定hover事件:

 $('.button-color-2').bind('hover', function(event) { dosmth(); $(this).unbind(event); }); 

如果你只是把那段代码包装成.one(),你就没做对了。

使用upper函数,您将分配hover事件,而不是执行它。 所以你必须像这样使用$ .one():

 $('.button-color-2').one('hover', function() dosth(); ); 

这是一个老线程,但这是我能够实现这一目标的方式。 我创建了一个计数器,该效果在效果在mouseenter上运行后递增,并使用if语句查看计数器是否大于1.如果计数器大于1,只需创建另一个完全突破它的else语句(这是防止它不断地发挥作用)。 您还需要一个mouseleave方法将计数器重置为0.以下是我使用的代码:

  $("#mydiv").mouseenter(function(){ if (counter < 1){ $(this).effect("pulsate", { times:1 }, 300); counter = counter + 1; return; } else{ return; } }); $("#mydiv").mouseleave(function(){ counter = 0; return; }); 

如果你想看到它的工作,请点击以下页面: http : //webpages.marshall.edu/~glasser1/jquery.html

将鼠标hover在白色方框上,它会发出一次脉冲。

编辑:我忘了添加你需要在函数之外初始化你的变量计数器,以便它是全局的并设置为零。