onMouseOver和onMouseEnter的区别

57
我想创建一个简单的HTML表格,当用户将鼠标悬停在行上时,该行会显示高亮。不幸的是,在IE浏览器中,CSS的:hover伪类无法生效,这让我必须使用JavaScript来模拟它。我可以使用onmouseenteronmouseover两种方式。它们之间的区别是什么?我应该使用哪一个呢?
3个回答

82

onmouseenteronmouseover 都在鼠标进入一个元素的边界时触发。然而,如果鼠标进入第一个元素内的子元素,onmouseenter 不会再次触发(不会冒泡)。


10
更新:Firefox从版本10(2012年1月)开始支持onmouseenter,Chrome从版本30(2013年10月)开始支持它(来源)。我没有找到Safari的信息,除了这个webkit bug,在该bug中修复于2013年4月。所以现在onmouseenter应该可以在大多数主要浏览器的用户中使用。 - ecraig12345

8
与onmouseover事件不同,onmouseenter事件不会冒泡。换句话说,当用户将鼠标指针移到对象所包含的元素上时,onmouseenter事件不会触发,而onmouseover会触发。
我总是使用onmouseover。我在相同的目的下使用onmouseover(高亮显示一行)。

1

你可以通过为IE中的所有元素添加:hover支持来节省一些编码工作:
尝试使用csshover.htc


CSS行为非常慢。它们每次线程停止执行时都会运行。尝试从htc向js添加一些日志记录以查看此问题。如果您只是想创建悬停效果,我们使用:hover,这对除IE6之外的所有人都有效。IE6必须消失。我认为这是可以接受的,因为悬停效果只是一种美观的附加功能。 - Ruan Mendes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接