如何解除jQuery中的“hover”?

如何解除jQuery中的“hover”?

这不起作用:

$(this).unbind('hover'); 

$(this).unbind('mouseenter').unbind('mouseleave')

或更简洁(谢谢@Chad格兰特 ):

$(this).unbind('mouseenter mouseleave')

实际上, jQuery文档比上面显示的链接示例有一个更简单的方法(尽pipe它们可以正常工作):

 $("#myElement").unbind('mouseenter mouseleave'); 

从jQuery 1.7开始,您也可以使用$.on()$.on()进行事件绑定,所以要解除绑定事件,您可以使用更简单更整齐的方法:

 $('#myElement').off('hover'); 

伪事件名称“hover” 被用作 “mouseenter mouseleave” 的简写 ,但在较早的jQuery版本中处理方式不同; 要求你明确地删除每个文字事件名称。 使用$.off()现在允许您使用相同的简写forms删除两个鼠标事件。

编辑2016:

仍然是一个受欢迎的问题,所以值得引起关注的@ Dennis98在下面的评论中指出,在jQuery 1.9 +中,“hover”事件被弃用赞成标准的“mouseenter mouseleave”调用。 所以你的事件绑定声明现在应该是这样的:

$('#myElement').off('mouseenter mouseleave');

解除绑定mouseentermouseleave事件,或者解除绑定元素上的所有事件。

 $(this).unbind('mouseenter').unbind('mouseleave'); 

要么

 $(this).unbind(); // assuming you have no other handlers you want to keep 

unbind()不适用于硬编码的内联事件。

所以,例如,如果你想解除来自<div id="some_div" onmouseover="do_something();">的mouseover事件,我发现$('#some_div').attr('onmouseover','')是一个快速和肮脏的方式来实现它。

对于使用.live()附加的事件,另一个解决scheme是.die ()

例:

 // attach click event for <a> tags $('a').live('click', function(){}); // deattach click event from <a> tags $('a').die('click'); 

你可以在这里find一个很好的参考: 探索jQuery .live()和.die()

(对不起,我的英文:“>)

所有hover在幕后都是绑定到mouseover和mouseout属性。 我会分别绑定和解除你的函数。

例如,假设你有以下的html:

 <a href="#" class="myLink">Link</a> 

那么你的jQuery将是:

 $(document).ready(function() { function mouseOver() { $(this).css('color', 'red'); } function mouseOut() { $(this).css('color', 'blue'); } // either of these might work $('.myLink').hover(mouseOver, mouseOut); $('.myLink').mouseover(mouseOver).mouseout(mouseOut); // otherwise use this $('.myLink').bind('mouseover', mouseOver).bind('mouseout', mouseOut); // then to unbind $('.myLink').click(function(e) { e.preventDefault(); $('.myLink').unbind('mouseover', mouseOver).unbind('mouseout', mouseOut); }); }); 

我发现这个作为第二个参数(函数).hover()

 $('#yourId').hover( function(){ // Your code goes here }, function(){ $(this).unbind() } }); 

第一个函数(参数.hover())是mouseover,并执行你的代码。 第二个参数是mouseout,它将从#yourId中解除hover事件。 您的代码将只执行一次。

您可以使用off来删除附加的特定事件处理程序

 $("#ID").on ("eventName", additionalCss, handlerFunction); // to remove the specific handler $("#ID").off ("eventName", additionalCss, handlerFunction); 

使用这个,你将只删除handlerFunction
另一个好的做法是为多个附加事件设置一个名称空间

 $("#ID").on ("eventName1.nameSpace", additionalCss, handlerFunction1); $("#ID").on ("eventName2.nameSpace", additionalCss, handlerFunction2); // ... $("#ID").on ("eventNameN.nameSpace", additionalCss, handlerFunctionN); // and to remove handlerFunction from 1 to N, just use this $("#ID").off(".nameSpace");