正如JQuery文档所说,我已将许多行鼠标转换为mouseenter,因为它不会多次触发。
http://api.jquery.com/mouseover/
当指针移动到子元素时,仅当指针移动到绑定元素时,
mouseover
会触发
mouseenter
才会触发。
即使hover
事件也可用作mouseenter和mouseleave,而不是mouseover和mouseout。
如果mouseover
可以完成所有操作,我会想知道为什么会出现mouseenter
事件。
对我来说,当你在一个元素上移动鼠标时,mouseover
会被无法预测地触发。它似乎真的取决于子元素的深度。
是否有mouseover
和mouseout
的良好用例,需要多次触发?
答案 0 :(得分:1)
据我所知,mouseover
/ mouseout
根本没有用例。它们存在的唯一原因是因为这些事件是由浏览器触发的,因为they are in the standard DOM event list。 mouseenter
和mouseleave
不是标准事件,但它们是特定于jQuery的构造。
我想如果您希望在将事件绑定到的元素的子元素移出和移出鼠标时触发事件,则会出现一个用例。我想不出任何具体的东西,但至少可以使用这个功能。如果仅存在mouseenter
/ mouseleave
,则您无法选择此事。
来自http://code.jquery.com/jquery-1.9.1.js:
jQuery.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function( orig, fix ) {
/* content snipped */
猜测:jQuery的创建者创建mouseenter
和mouseleave
非标准事件的原因是因为他们的行为与您期望的mouseover
/ mouseout
一样有效工作的事件(即不考虑后代)。
答案 1 :(得分:-1)
因为事件包含光标的坐标。 因此,如果您需要跟踪目标下的鼠标坐标,则必须使用“鼠标悬停”