• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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')的快捷方式。

    mouseenterJavaScript事件是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="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

    上篇:hover()

    下篇:mouseleave()