当前位置: 首页 > news >正文

JQuery mouseover mouseout mouseenter mouseleave 的区别

用交互操作中,经常需要知道用户操作鼠标是否有移到元素内部或是元素外部,因此jQuery提供了一个mouseenter和mouseleave的快捷方法可以监听用户移动到内部的操作

使用上非常简单,三种参数传递方式与mouseover和mouseout是一模一样的,所以这里不再重复,主要讲讲区别,下面以mouseenter为例:

mouseenter JavaScript事件是Internet Explorer专有的。由于该事件在平时很有用,jQuery的模拟这一事件,以便它可用于所有浏览器。该事件在鼠标移入到元素上时被触发。任何HTML元素都可以接受此事件。

mouseenter事件和mouseover的区别 

关键点就是:冒泡的方式处理问题

简单的例子:

mouseover为例:

<div class="aaron2">
    <p>鼠标离开此区域触发mouseleave事件</p>
</div>

如果在p元素与div元素都绑定mouseover事件,鼠标在离开p元素,但是没有离开div元素的时候,触发的结果:

  1. p元素响应事件
  2. div元素响应事件

这里的问题是div为什么会被触发? 原因就是事件冒泡的问题,p元素触发了mouseover,他会一直往上找父元素上的mouseover事件,如果父元素有mouseover事件就会被触发

所以在这种情况下面,jQuery推荐我们使用 mouseenter事件

mouseenter事件只会在绑定它的元素上被调用,而不会在后代节点上被触发。

参考 https://www.cnblogs.com/wymbk/p/5711715.html
 
 
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
    .left div,
    .right div {
        width: 350px;
        height: 150px;
        padding: 5px;
        margin: 5px;
        border: 1px solid #ccc;
    }
    p{
        height: 50px;
        border: 1px solid red;
        margin: 30px;
    }
    .left div {
        background: #bbffaa;
    }
    .right div {
        background: yellow;
    }
    </style>
    <script src="jquery-3.3.1.js"></script>
</head>

<body>
    <h2>.mouseover()方法</h2>
    <div class="left">
        <div class="aaron1">
            <p>鼠标离开此区域触发mouseover事件</p>
            <a>mouseover事件触发次数:</a><br/>
            <a>mouseover冒泡事件触发次数:</a>
        </div>
    </div>

    <h2>.mouseenter()方法</h2>
    <div class="right">
        <div class="aaron2">
            <p>鼠标进入此区域触发mouseenter事件</p>
            <a>mouseenter事件触发次数:</a><br/>
            <a>mouseenter冒泡事件触发次数:</a>
        </div>
    </div>
    <br/>
   
    
    <script type="text/javascript">

        var i = 0;
        $(".aaron1 p").mouseover(function(e) {
            $(".aaron1 a:first").html('mouseover事件触发次数:' + (++i))
        })

        var n = 0;
        $(".aaron1").mouseover(function() {
            $(".aaron1 a:last").html('mouseover冒泡事件触发次数:' + (++n))
        })


    </script>


    <script type="text/javascript">

        var i = 0;
        $(".aaron2 p").mouseenter(function(e) {
            $(".aaron2 a:first").html('mouseenter事件触发次数:' + (++i))
        })

        var n = 0;
        $(".aaron2").mouseenter(function() {
            $(".aaron2 a:last").html('mouseenter冒泡事件触发次数:' + (++n))
        })

    </script>


</body>

</html>
 
 

  

 

转载于:https://www.cnblogs.com/potato-lee/p/8940108.html

相关文章:

  • Nginx安装以及配置
  • 在使用mybatis中指定字段查询
  • 上海高校金马五校赛 J - 小Y写文章
  • C#求百分比
  • 用python写一个类似于linux中的tree
  • JS去掉字符串前后空格或去掉所有空格的用法
  • C#预处理器指令
  • find中的-exec参数
  • 再次解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException
  • 学习笔记——悬线法
  • 8.dockerfile之CMD指令
  • Mysql Programming CS 155P笔记(七) Dynamic SQL
  • JMS学习六(ActiveMQ消息传送模型)
  • linux常用命令:find 命令参数详解
  • MySQL Route负载均衡与读写分离Docker环境使用
  • 自己简单写的 事件订阅机制
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • chrome扩展demo1-小时钟
  • cookie和session
  • django开发-定时任务的使用
  • FineReport中如何实现自动滚屏效果
  • JavaScript 奇技淫巧
  • JS数组方法汇总
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PHP变量
  • Sass 快速入门教程
  • vue.js框架原理浅析
  • Vue实战(四)登录/注册页的实现
  • yii2中session跨域名的问题
  • - 概述 - 《设计模式(极简c++版)》
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 微信小程序设置上一页数据
  • 正则与JS中的正则
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 带你开发类似Pokemon Go的AR游戏
  • ​虚拟化系列介绍(十)
  • #{}和${}的区别?
  • #在 README.md 中生成项目目录结构
  • (11)MATLAB PCA+SVM 人脸识别
  • (145)光线追踪距离场柔和阴影
  • (八)Flask之app.route装饰器函数的参数
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)linux 命令大全
  • (转载)Linux网络编程入门
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .net操作Excel出错解决
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @ConditionalOnProperty注解使用说明
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解