何时选择mouseover()和hover()函数?


112

jQuery .mouseover().hover()函数之间有什么区别?如果它们完全相同,为什么jQuery会同时使用两者?


4
这不是重复的问题。您提供的链接具有mouseover和mouseenter事件,而我的是mouseover和hover事件。
Bhojendra Rauniyar

1
它们的区别与mouseover nad mouseleave相同,并且下面接受的答案不准确...悬停功能添加了mouseenter和mouseleve事件,而不是mouseover和mouseout事件
Arun P

1
参见jsfiddle.net/arunpjohny/cZb5b/1将鼠标从el元素移至child并检查控制台
Arun P Johny 2014年

@ArunPJohny请重新阅读,这表示mouseenter和mouseleave而不是mouseover和mouseout。
Bhojendra Rauniyar 2014年

1
也可以悬停-jsfiddle.net/arunpjohny/cZb5b/2如果您可以分析控制台,则可以找到不同之处……
Arun P Johny 2014年

Answers:


113

来自官方jQuery文档

  • .mouseover()
    将事件处理程序绑定到“ mouseover” JavaScript事件,或在元素上触发该事件。

  • .hover() 将一个或两个处理程序绑定到匹配的元素,以在鼠标指针 进入离开元素时执行。

    呼叫$(selector).hover(handlerIn, handlerOut)是以下方面的简写: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);


  • .mouseenter()

    绑定要在鼠标进入元素时触发的事件处理程序,或在元素上触发该处理程序。

    mouseover当指针也移入子元素时mouseenter触发,而仅当指针移入绑定元素时触发。


这是什么意思

正因为如此,.mouseover()就是一样.hover(),出于同样的原因.mouseover()一样的.mouseenter()

$('selector').mouseover(over_function) // may fire multiple times

// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function) 

31

.hover()函数接受两个函数参数,一个用于mouseenter事件,一个用于mouseleave事件。


就问题标题中提到的两个功能之间的区别而言,这很重要,谢谢!请查看以下w3schools上的链接以了解.hover()的工作方式: w3schools.com/jquery/event_hover.asp
Bahman.A,

8

您可以在jQuery文档页面上http://api.jquery.com/mouseover/试用。这是一个很好的互动演示,非常清晰,您可以亲自看到。

简而言之,您会注意到当鼠标悬停在元素上时会发生鼠标悬停事件-来自其子元素或父元素,但是仅当鼠标从父元素移至该元素时才会发生鼠标进入事件。



1

如您所见,请访问http://api.jquery.com/mouseenter/

mouseenter JavaScript事件是Internet Explorer专有的。由于该事件具有通用功能,因此jQuery会模拟此事件,以便无论浏览器如何都可以使用它。当鼠标指针进入元素时,此事件发送到元素。任何HTML元素都可以接收此事件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.