當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JQuery .mouseleave()用法及代碼示例


用法
.mouseleave( handler ) => jQuery

說明:綁定一個事件處理程序以在鼠標離開元素時觸發,或在元素上觸發該處理程序。

  • 添加的版本:1.0.mouseleave( handler )

    • handler
      類型:Function(Event eventObject)
      每次觸發事件時執行的函數。
  • 添加的版本:1.4.3.mouseleave( [eventData ], handler )

    • eventData
      類型:Anything
      包含將傳遞給事件處理程序的數據的對象。
    • handler
      類型:Function(Event eventObject)
      每次觸發事件時執行的函數。
  • 添加的版本:1.0.mouseleave()

    • 此簽名不接受任何參數。

此方法是前兩個變體中.on('mouseleave', handler) 和第三個變體中.trigger('mouseleave') 的快捷方式。

mouseleave 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>
圖 1 - 呈現的 HTML 的插圖

事件處理程序可以綁定到任何元素:

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

現在當鼠標指針移出 <div>, 消息被附加到<div id="log">.您還可以在單擊另一個元素時觸發事件:

$( "#other" ).click(function() {
  $( "#outer" ).mouseleave();
});

這段代碼執行後,點擊觸發處理程序還將附加消息。

mouseleave事件不同於mouseout它處理事件冒泡的方式。如果mouseout在此示例中使用了,然後當鼠標指針移出元素,將觸發處理程序。這通常是不受歡迎的行為。這mouseleave另一方麵,事件僅在鼠標離開它所綁定的元素而不是後代元素時觸發其處理程序。所以在這個例子中,當鼠標離開時觸發處理程序元素,但不是元素。

其他注意事項:

  • 由於 .mouseleave() 方法隻是 .on( "mouseleave", handler ) 的簡寫,因此可以使用 .off( "mouseleave" ) 進行分離。

例子:

顯示觸發 mouseout 和 mouseleave 事件的次數。 mouseout 也會在指針移出子元素時觸發,而 mouseleave 僅在指針移出綁定元素時觸發。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>mouseleave demo</title>
  <style>
  div.out {
    width: 40%;
    height: 120px;
    margin: 0 15px;
    background-color: #d6edfc;
    float: left;
  }
  div.in {
    width: 60%;
    height: 60%;
    background-color: #fc0;
    margin: 10px auto;
  }
  p {
    line-height: 1em;
    margin: 0;
    padding: 0;
  }
  </style>
  <script src="https://code.jquery.com/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", this ).first().text( "mouse over" );
  })
  .mouseout(function() {
    $( "p", this ).first().text( "mouse out" );
    $( "p", this ).last().text( ++i );
  });
 
var n = 0;
$( "div.enterleave" )
  .mouseenter(function() {
    $( "p", this ).first().text( "mouse enter" );
  })
  .mouseleave(function() {
    $( "p", this ).first().text( "mouse leave" );
    $( "p", this ).last().text( ++n );
  });
</script>
 
</body>
</html>

演示:

相關用法


注:本文由純淨天空篩選整理自jquery.com大神的英文原創作品 .mouseleave()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。