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在白色方框上,它会发出一次脉冲。
编辑:我忘了添加你需要在函数之外初始化你的变量计数器,以便它是全局的并设置为零。