• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mouseover()

    为 JavaScript 的"mouseover"事件绑定一个处理函数,或者触发元素上的该事件。(注:支持事件冒泡)

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

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

    当鼠标指针进入元素内时,mouseover事件就会被触发,任何HTML元素都可以接受此事件。

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

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

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

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

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

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

    这些代码执行后,点击Trigger the handler 同样添加这个信息。

    Outer
    Inner
    Trigger the handler

    由于此事件类型冒泡,可能导致引起的很多头痛的问题。例如,在这个例子中当鼠标指针移出Inner元素,mouseover事件将被发送到Inner元素,然后冒泡到Outer元素。这可能会不合时宜的触发绑定的mouseover处理函数。这可以用一个替代方法,见讨论. mouseenter()

    Additional Notes(其他注意事项):

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

    例子

    当触发 mouseover 和 mouseenter 事件时,显示鼠标移出对象的次数。当鼠标移入绑定 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">
      <span>move your mouse</span>
      <div class="in">
      </div>
    </div>
     
    <div class="out enterleave">
      <span>move your mouse</span>
      <div class="in">
      </div>
    </div>
     
    <script>
      var i = 0;
      $("div.overout").mouseover(function() {
        i += 1;
        $(this).find("span").text( "mouse over x " + i );
      }).mouseout(function(){
        $(this).find("span").text("mouse out ");
      });
     
      var n = 0;
      $("div.enterleave").mouseenter(function() {
        n += 1;
        $(this).find("span").text( "mouse enter x " + n );
      }).mouseleave(function() {
        $(this).find("span").text("mouse leave");
      });
     
    </script>
     
    </body>
    </html>
    
    move your mouse
    move your mouse

    上篇:mousemove()

    下篇:mouseout()