mouseover和mouseenter兩個事件的區別


mouseover(鼠標覆蓋)

mouseenter(鼠標進入)

二者的本質區別在於,mouseenter不會冒泡,簡單的說,它不會被它本身的子元素的狀態影響到.但是mouseover就會被它的子元素影響到,在觸發子元素的時候,mouseover會冒泡觸發它的父元素.(想要阻止mouseover的冒泡事件就用mouseenter)

共同點:當二者都沒有子元素時,二者的行為是一致的,但是二者內部都包含子元素時,行為就不同了.

貼出代碼:


   
   
   
           
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <title> </title>
  6.         <script type="text/javascript" src="js/jquery.min.js"> </script>
  7.         <style>
  8.             .div1,
  9.             .div2,
  10.             .div3,
  11.             .div4 {
  12.                 width: 200px;
  13.                 height: 200px;
  14.             }
  15.             
  16.             .div1 {
  17.                 background: darkcyan;
  18.             }
  19.             
  20.             .div2 {
  21.                 background: violet;
  22.             }
  23.             
  24.             .div3 {
  25.                 background: darkgray;
  26.             }
  27.             
  28.             .div4 {
  29.                 background: darkgreen;
  30.             }
  31.             
  32.             p {
  33.                 width: 110px;
  34.                 height: 100px;
  35.                 background: aquamarine;
  36.                 margin: 0 auto;
  37.             }
  38.         </style>
  39.         <script>
  40.             x = 0;
  41.             y = 0;
  42.             z = 0;
  43.             w = 0;
  44.             $( function() {
  45.                 $( ".div1").on( "mouseenter", function() {
  46.                     $( "#s1").text(x += 1)
  47.                 })
  48.                 $( ".div2").on( "mouseover", function() {
  49.                     $( "#s2").text(y += 1)
  50.                 })
  51.                 $( ".div2").on( "mouseover", function() {
  52.                     $( "#s2").text(y += 1)
  53.                 })
  54.                 $( ".div3").on( "mouseenter", function() {
  55.                     $( "#s3").text(z += 1)
  56.                 })
  57.                 $( ".div4").on( "mouseover", function() {
  58.                     $( "#s4").text(w += 1)
  59.                 })
  60.             })
  61.         </script>
  62.     </head>
  63.     <body>
  64.         <div class="div1">
  65.             div1沒有子元素(mouseenter)
  66.         </div>
  67.         <span id="s1"> </span>
  68.         <div class="div2">
  69.             div2沒有子元素(mouseover)
  70.         </div>
  71.         <span id="s2"> </span>
  72.         <div class="div3">
  73.             <p id="p1"> div3有子元素p(mouseenter) </p>
  74.         </div>
  75.         <span id="s3"> </span>
  76.         <div class="div4">
  77.             <p id="p2">div4有子元素p(mouseover) </p>
  78.         </div>
  79.         <span id="s4"> </span>
  80.     </body>
  81. </html>

先測試一下div1和div2都是沒有子元素的情況,看下面動圖

  可以看到當div沒有子元素的時候,兩者在鼠標覆蓋或者進入的時候行為一樣.

接下來看一下有子元素的div3和div4,如下動圖

 

  可以看到在有子元素的div3在mouseenter也不會觸發div3

但是div4就會被在它的子元素被覆蓋的時候被觸發了,也就是產生了冒泡

最后注意:mouseenter就是在想要阻止冒泡事件發生的時候使用

把代碼復制復制粘貼下來自己測試一下就明白了,不過注意: jquery需要的包你需要引入,不然是沒有效果的.

代碼下載鏈接: 代碼鏈接

 

原文:https://blog.csdn.net/lplife/article/details/80436623


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM