zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《Graph Attention Network》阅读笔记
    Spark 中的机器学习库及示例
    Spark 中 RDD的运行机制
    Spark 的 python 编程环境
    1.10系统调用和库函数
    nginx中的configure脚本
    nginx中的main函数
    IPv4,IPv6套接字地址结构
    unix网络编程中的地址转换函数
    有关nginx中Strings模块中ngx_explicit_memzero()函数的死区消除优化问题
  • 原文地址:https://www.cnblogs.com/showcase/p/11274683.html
Copyright © 2011-2022 走看看