mouseenter()

为 mouse enters(鼠标进入)事件绑定一个处理函数,或者触发元素上的 mouse enters(鼠标进入)事件。

.mouseenter(handler(eventObject))
  • handler(eventObject) 类型:Function() 。每次事件触发时会执行的函数。
.mouseenter([eventData ], handler(eventObject))
  • eventData 类型: PlainObject 。一个对象,它包含的数据键值对映射将被传递给事件处理程序。
  • handler(eventObject) 类型:Function() 。每次事件触发时会执行的函数。
.mouseenter()
  • 这个方法不接受任何参数。

这个方法的前两个用法是 .bind('mouseenter', handler) 的快捷方式,第3个不带参数的用法是 .trigger('mouseenter') 的快捷方式。

mouseenter JavaScript事件是Internet Explorer专有的。由于该事件在平时很有用,jQuery的模拟这一事件,以便它可用于所有浏览器。该事件在鼠标移入到元素上时被触发。任何HTML元素都可以接受此事件。

举例来说,请看下面的HTML:

<div id="outer">
  Outer
  <div id="inner">
    Inner
  </div>
</div>
<div id="other">
  Trigger the handler
</div>
<div id="log"></div>

这个事件可以绑定到任何元素:

$('#outer').mouseenter(function() {
  $('#log').append('<div>Handler for .mouseenter() called.</div>');
});

现在当指针在Outer <div> 元素上移动时,Handler for .mousedown()called.将被添加到 <div id="log"> 。我们也可以通过点击其它元素,手动触发另一个元素上的该事件:

$('#other').click(function() {
      $('#outer').mouseenter();
    });

这些代码执行后,点击Trigger the handler同样警报显示。

Outer
Inner
Trigger the handler

mouseenter 事件和 mouseover 的不同之处是事件的冒泡的方式。如果 mouseover 在这个例子中使用了,然后当鼠标指针在Inner元素上移动,该处理程序将被触发。这通常是不受欢迎的行为。另一方面, mouseenter 事件只会在绑定它的元素上被调用,而不会在后代节点上被触发。因此,在这个例子中,当鼠标进入Outer元素,而不是Inner元素时,处理器才会被触发。

Additional Notes(其他注意事项):

  • .mouseenter() 方法只是作为 .on("mouseenter", handler) 的一个速记写法,移除该事件可以使用 .off("mouseenter")

例子

Show texts when mouseenter and mouseout event triggering. mouseover 当触发 mouseenter 和 mouseout 事件时,显示一段文字。当鼠标移动到绑定 mouseover 事件元素的子元素上时,mouseover 事件同样会被触发。但是,只有在绑定 mouseenter 事件的元素上,才会触发该事件。

<!DOCTYPE html>
<html>
<head>
  <style>
div.out {
width:40%;
height:120px;
margin:0 15px;
background-color:#D6EDFC;
float:left;
}
div.in {
width:60%;
height:60%;
background-color:#FFCC00;
margin:10px auto;
}
p {
line-height:1em;
margin:0;
padding:0;
}
</style>
  <script src="./static/js/jquery-3.5.0.js"></script>
</head>
<body>
 
<div class="out overout">
	<p>move your mouse</p>
	<div class="in overout">
		<p>move your mouse</p>
		<p>0</p>
	</div>
	<p>0</p>
</div>
 
<div class="out enterleave">
	<p>move your mouse</p>
	<div class="in enterleave">
		<p>move your mouse</p>
		<p>0</p>
	</div>
	<p>0</p>
</div>
 
 
<script>
    var i = 0;
    $("div.overout").mouseover(function(){
      $("p:first",this).text("mouse over");
      $("p:last",this).text(++i);
    }).mouseout(function(){
      $("p:first",this).text("mouse out");
    });
 
    var n = 0;
    $("div.enterleave").mouseenter(function(){
      $("p:first",this).text("mouse enter");
      $("p:last",this).text(++n);
    }).mouseleave(function(){
      $("p:first",this).text("mouse leave");
    });
 
</script>
 
</body>
</html>

效果如下:

move your mouse

move your mouse

0

0

move your mouse

move your mouse

0

0

上篇: hover()

下篇: mouseleave()