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同样警报显示。
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="https://www.lanmper.cn/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