返回值:jQuerymouseenter(handler(eventObject))
绑定一个事件,该事件在鼠标移入到元素上时被触发。或者触发元素上的该事件。(不支持事件冒泡)
-
1.0 新增mouseenter(handler(eventObject))
handler(eventObject) (Function) 每当事件触发时执行的函数。 -
1.4.3 新增mouseenter([eventData], handler(eventObject))
eventData (Object) 可选参数,将要传递给事件处理函数的数据映射。handler(eventObject) (Function) 每当事件触发时执行的函数。 -
1.0 新增mouseenter()
带有参数的该方法是 .bind('mouseenter', handler) 的快捷方式,不带参数的该方法是 .trigger('mouseenter') 的快捷方式。
mouseenter JavaScript 事件是 IE 特有的事件。由于该事件通常很有用,所以 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> 时,就会向 <div id="log"> 中追加信息。我们也可以通过点击其它元素,手动触发另一个元素上的该事件:
$('#other').click(function() {
$('#outer').mouseenter();
});
在代码执行后,如果你点击 Trigger the handler 将同样会追加上面的消息。
mouseenter 事件与 mouseover 不同之处在事件冒泡上。mouseenter 事件不会进行事件冒泡,而 mouseover 则会事件冒泡。如果上例中使用的是 mouseover,那么当鼠标移到 Inner 元素上时,该事件也会被触发,但通常这不是我们想要的结果。另一方面,mouseenter 事件只会在绑定它的元素上被调用,而不会在后代节点上被触发。所以,在上面的例子中,当鼠标移到 Outer 元素时,该事件才会被触发,但是将鼠标移到 Inner 元素上时,该事件是不会被触发的。
示例:
当触发 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="jquery.min.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>