鼠标移入,移除等在div中触发事件遇到问题

顺便整理一下各种触发

  • js触发 

    页面加载事件(onload),鼠标双击事件(ondbclick)

    window.onload=function(){
                    //绑定元素,执行对应事件 鼠标双击(ondblclick)
                    //鼠标双击事件ondblclick
                    document.getElementById('d2').ondblclick=function(){
                        alert('我是双击显示的');
                    }
                }

    鼠标点下(onmousedown)事件(点下去就执行,鼠标无需抬起)

                window.onload=function(){
                    //绑定元素,执行鼠标点下操作  鼠标点下(onmousedown)
                    document.getElementById('d3').onmousedown=function(){
                        alert('我是鼠标点下提示');
                    }
                }

    鼠标抬起(onmouseup)事件(点下后,然后鼠标回弹才执行)

                window.onload=function(){
                    //绑定元素,执行鼠标抬起事件   鼠标抬起(onmouseup)
                    document.getElementById('d4').onmouseup=function(){
                        alert('鼠标抬起的提示');
                    }
                }

    鼠标移动(onmousemove)事件

                window.onload=function(){
                    //绑定元素,执行鼠标移动事件   鼠标移动(onmousemove)
                    document.getElementById('d5').onmousemove=function(){
                        alert('鼠标移动的提示');
                    }
                }

    鼠标移入(onmouseover)事件 只要在指定div中移动就会触发

                window.onload=function(){
                    //绑定元素,执行鼠标移入事件   鼠标移入(onmousemove)
                    document.getElementById('d6').onmouseover=function(){
                        alert('鼠标移入操作');
                    }
                }

    鼠标移出(onmouseout)事件    

                window.onload=function(){
                    //绑定元素,执行鼠标移出事件   鼠标移出(onmouseout)
                    document.getElementById('d7').onmouseout=function(){
                        alert('鼠标移出操作');
                    }
                }

  • JQ触发      

     click 事件
    当用户点击一个元素时触发。

    $('button').click(function() {  
        alert('你点击了按钮!');  
    });


    mouseenter 和 mouseleave 事件
    当鼠标指针进入或离开一个元素时触发。

    $('#myElement').mouseenter(function() {  
        alert('鼠标进入了元素!');  
    }).mouseleave(function() {  
        alert('鼠标离开了元素!');  
    });


    3. mousedown 和 mouseup 事件
    当用户在元素上按下或释放鼠标按钮时触发。

    $('#myElement').mousedown(function() {  
        alert('鼠标按钮被按下!');  
    }).mouseup(function() {  
        alert('鼠标按钮被释放!');  
    });


    4. mousemove 事件
    当鼠标指针在元素内部移动时触发。

    $('#myElement').mousemove(function(event) {  
        alert('鼠标位置:X=' + event.pageX + ', Y=' + event.pageY);  
    });


    5. hover 事件
    这是 mouseenter 和 mouseleave 的便捷方法。

    $('#myElement').hover(  
        function() {  
            alert('鼠标进入了元素!');  
        },  
        function() {  
            alert('鼠标离开了元素!');  
        }  
    );


    6. 自定义鼠标事件处理
    你还可以根据具体的业务需求,编写自定义的鼠标事件处理逻辑。

    $(document).ready(function() {  
        $('#myElement').on('click', function(event) {  
            var x = event.pageX;  
            var y = event.pageY;  
            alert('你在位置 X=' + x + ', Y=' + y + ' 点击了元素!');  
        });  
    });

  • 设置一个div样式 让看起来区域内是不可操作的



$("#myDiv").css("position", "relative").append("<div class='overlay'></div>");


  // 样式可自行修改
.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  pointer-events: none;
}
  • 我的实现

我的目的是在一块div中 移入 内部不能操作  

同时我也禁用了 鼠标 、 键盘 、 触屏  等操作 

  • 第一种办法 :
 var isMouseOver = false;
            $('.tablediv1').on('mouseover', function() {
                var $this = $(this);
                if (!isMouseOver) {
                    isMouseOver = true;
                    $this.css("position", "relative").append("<div class='overlay'></div>");
                    console.log('鼠标移入操作');
                    // 一次性绑定需要阻止的事件
                    $this.on('mousedown touchstart keydown wheel mousewheel DOMMouseScroll', function(e) {
                        e.preventDefault();
                        e.stopPropagation();
                        console.log('鼠标移入阻止的事件');
                        return false;
                    });
                }
            }).on('mouseout', function() {
                var $this = $(this);
                isMouseOver = false;
                // 在鼠标移出时,可以考虑移除之前绑定的事件处理器,恢复交互能力
                $this.off('mousedown touchstart keydown wheel mousewheel DOMMouseScroll');
                console.log('鼠标移出阻止的事件');
                $('.overlay', $this).remove(); // 移除之前添加的overlay元素
            });
  • 第二种办法:


<div id="myDisabledDiv" class="layui-layer-wrap">
    内容 
</div> 


===================================


#myDisabledDiv.disabled {
    pointer-events: none;
    opacity: 0.6;
    user-select: none;
}


===================================





// 初始化时检查是否需要禁用
    disableDivWhenNeeded('#myDisabledDiv');

    // 假设有一个按钮用于切换禁用状态
    $('#toggleDisable').click(function(){
        var div = $('#myDisabledDiv');
        if(div.hasClass('disabled')){
            div.removeClass('disabled');
            enableDivEvents(div);
        } else {
            div.addClass('disabled');
            disableDivEvents(div);
        }
    });
});

function disableDivEvents(div) {
    div.on('mousedown touchstart keydown wheel mousewheel DOMMouseScroll contextmenu', function(e){
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
}

function enableDivEvents(div) {
    div.off('mousedown touchstart keydown wheel mousewheel DOMMouseScroll contextmenu');
}

function disableDivWhenNeeded(divSelector) {
    // 根据你的业务逻辑判断是否需要禁用
    var shouldDisable = true; // 这里替换成你的条件判断
    if (shouldDisable) {
        $(divSelector).addClass('disabled');
        disableDivEvents($(divSelector));
    }
}

由于都框架问题还有浏览器插件会拦截然后给了警告不能触发 就有了下面的

第三种办法:



    // 初始化时检查是否需要禁用
    disableDivWhenNeeded('#myDisabledDiv');

    // 假设有一个按钮用于切换禁用状态
    $('#toggleDisable').click(function(){
        var div = $('#myDisabledDiv');
        if(div.hasClass('disabled')){
            div.removeClass('disabled');
            enableDivEvents(div);
        } else {
            div.addClass('disabled');
            disableDivEvents(div);
        }
    });
});

function addPassiveEventListener(element, eventName, handler) {
    element.addEventListener(eventName, handler, { passive: true });
}

function removePassiveEventListener(element, eventName, handler) {
    element.removeEventListener(eventName, handler, { passive: true });
}

function disableDivEvents(div) {
    addPassiveEventListener(div.get(0), 'wheel', function(e){
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
    addPassiveEventListener(div.get(0), 'touchstart', function(e){
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
    div.on('keydown mousewheel DOMMouseScroll contextmenu', function(e){
        e.preventDefault();
        e.stopPropagation();
        return false;
    });
}

function enableDivEvents(div) {
    removePassiveEventListener(div.get(0), 'wheel', null); // 注意这里第二个参数为null,因为我们不传递具体的handler
    removePassiveEventListener(div.get(0), 'touchstart', null);
    div.off('keydown mousewheel DOMMouseScroll contextmenu');
}

function disableDivWhenNeeded(divSelector) {
    // 根据你的业务逻辑判断是否需要禁用
    var shouldDisable = true; // 这里替换成你的条件判断
    if (shouldDisable) {
        $(divSelector).addClass('disabled');
        disableDivEvents($(divSelector));
    }
}

更换过后的触发 。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/583784.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Llama3 在线试用与本地部署

美国当地时间4月18日&#xff0c;Meta 开源了 Llama3 大模型&#xff0c;目前开源版本为 8B 和 70B 。Llama 3 模型相比 Llama 2 具有重大飞跃&#xff0c;并在 8B 和 70B 参数尺度上建立了 LLM 模型的新技术。由于预训练和后训练的改进&#xff0c;Llama3 模型是目前在 8B 和 …

应急响应-webserver

一.环境准备 1.镜像文件 2.任务说明 3.用户密码 二.应急响应 环境启动 1.导入镜像文件并修改网络 2.远程连接 ss -ntl #列出系统中运行的所有进程 用远程连接工具连接 任务一 Linux 服务日志默认存储在/var/log目录下 默认网站根目录&#xff1a;/var/www/html/ 1.查看…

【Doris系列】 SQL 多方言兼容

目前 Doris 引擎提供了两种方式实现对 sql 多方言的支持。即&#xff0c;提交指定方言的 sql&#xff0c;Doris 可以成功解析&#xff0c;并返回正确的计算结果。本文就简单来测试验证下这两种方式的效果。 一、Doris Sql Convertor Doris 官方提供了一个 sql convertor 工具…

ES全文检索支持拼音和繁简检索

ES全文检索支持拼音和繁简检索 1. 实现目标2. 引入pinyin插件2.1 编译 elasticsearch-analysis-pinyin 插件2.2 安装拼音插件 3. 引入ik分词器插件3.1 已有作者编译后的包文件3.2 只有源代码的版本3.3 安装ik分词插件 4. 建立es索引5.测试检索6. 繁简转换 1. 实现目标 ES检索时…

力扣33. 搜索旋转排序数组

Problem: 33. 搜索旋转排序数组 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化左右指针&#xff1a;首先&#xff0c;定义两个指针left和right&#xff0c;分别指向数组的开始和结束位置。 2.计算中间值&#xff1a;在left和right之间找到中间位置mid。 3.比较中间值…

使用Python爬取淘宝商品并做数据分析

使用Python爬取淘宝商品并做数据分析&#xff0c;可以按照以下步骤进行操作&#xff1a; 确定需求&#xff1a;确定要爬取的淘宝商品的种类、数量、关键词等信息。 编写爬虫程序&#xff1a;使用Python编写爬虫程序&#xff0c;通过模拟浏览器请求&#xff0c;获取淘宝商品的页…

ffmpeg音视频裁剪

音视频裁剪&#xff0c;通常会依据时间轴为基准&#xff0c;从某个起始点到终止点的音视频截取出来&#xff0c;当然音视频文件中存在多路流&#xff0c;所对每一组流进行裁剪 基础概念&#xff1a; 编码帧的分类&#xff1a; I帧(Intra coded frames): 关键帧&#xff0c;…

SpringCloud学习笔记(一)微服务介绍、服务拆分和RestTemplate远程调用、Eureka注册中心

文章目录 1 认识微服务1.1 单体架构1.2 分布式架构1.3 微服务1.4 SpringCloud1.5 总结 2 服务拆分与远程调用2.1 服务拆分原则2.2 服务拆分示例2.2.1 搭建项目2.2.2 创建数据库和表2.2.3 实现远程调用2.2.3.1 需求描述2.2.3.2 注册RestTemplate2.2.3.3 实现远程调用 2.2.4 提供…

【网络】HTTP协议

文章目录 一. 认识 URL1. URL 初识2. URL 的组成① 协议名称② 域名③ 端口号④ 文件路径⑤ 查询参数 3. URL中的字符3.1 合法字符3.2 保留字符3.3 其他字符3.4 URL中的字符总结 二. HTTP 协议1. HTTP 介绍2. 请求报文2.1 请求报文的格式2.2 请求方法介绍2.3 请求报文中常见的 …

【LeetCode:1103. 分糖果 II + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

CUDA架构介绍与设计模式解析

文章目录 **CUDA**架构介绍与设计模式解析**1** CUDA 介绍CUDA发展历程CUDA主要特性CUDA系统架构CUDA应用场景编程语言支持CUDA计算过程线程层次存储层次 **2** CUDA 系统架构分层架构并行计算模式生产-消费者模式工作池模式异步编程模式 **3** CUDA 中的设计模式工厂模式策略模…

电脑技巧:推荐一款非常好用的媒体播放器PotPlayer

目录 一、 软件简介 二、功能介绍 2.1 格式兼容性强 2.2 高清播放与硬件加速 2.3 自定义皮肤与界面布局 2.4 多音轨切换与音效增强 2.5 字幕支持与编辑 2.6 视频截图与录像 2.7 网络流媒体播放 三、软件特色 四、使用技巧 五、总结 一、 软件简介 PotPlayer播放器 …

【MATLAB源码-第201期】基于matlab的黏菌群优化算法(SMA)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 黏菌优化算法&#xff08;Slime Mould Algorithm, SMA&#xff09;是一种新颖的启发式优化方法&#xff0c;其灵感来源于自然界中的真菌——黏菌。这种算法模拟了黏菌在寻找食物时的行为和网络形成策略。在本文中&#xff0c…

【Linux】yum、vim

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 Linux 软件包管理器 yum 什么是软件包 查看软件包 如何安装软件 如何卸载软…

网络安全的重要性及人才需求

安全现在是大趋势&#xff0c;说是铁饭碗也不为过&#xff0c;就业前景好&#xff0c;方向多比传统计算机行业就业舒服点。但是大厂依然是985&#xff0c;211的天下&#xff0c;是双非能进大厂的&#xff0c;只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 以2023年为…

【华为】VRRP的实验配置

【华为】VRRP的实验配置 实验需求拓扑LSW 3LSW 1基础配置VRRPDHCPOSPF默认路由 LSW 2基本配置VRRPDHCPOSPF默认路由 R1ISPPC1PC2 测试上网VRRP实验需求监视端口 配置文档 实验需求 ① 该公司有市场部和技术部&#xff0c;分别划在VLAN 10 和 VLAN 20里面 ② 此时为了网络的稳…

万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信

文章目录 一、设置IP以及MAC二、上板效果2.1、板卡与主机数据回环测试2.2、板卡满带宽发送数据 一、设置IP以及MAC 顶层模块设置源MAC地址 module XC7Z100_Top#(parameter P_SRC_MAC 48h01_02_03_04_05_06,parameter P_DST_MAC 48hff_ff_ff_ff_ff_ff )(input …

双目深度估计原理立体视觉

双目深度估计原理&立体视觉 0. 写在前面1. 双目估计的大致步骤2. 理想双目系统的深度估计公式推导3. 双目标定公式推导4. 极线校正理论推导 0. 写在前面 双目深度估计是通过两个相机的对同一个点的视差来得到给该点的深度。 标准系统的双目深度估计的公式推导需要满足:1)两…

ASR语音转录Prompt优化

ASR语音转录Prompt优化 一、前言 在ASR转录的时候&#xff0c;我们能很明显的感受到有时候语音识别不是很准确&#xff0c;这过程中常见的文本错误主要可以归纳为以下几类&#xff1a; 同音错误&#xff08;Homophone Errors&#xff09; 同音错误发生在不同词语发音相似或相…

Modelsim自动仿真平台的搭建

Modelsim自动仿真平台的搭建 如果要搭建自动仿真平台脚本那就需要更改下面3个文件。run_simulation.bat、complie.do和wave.do文件。注&#xff1a;前提是安装了modulsim并且配置好了环境变量&#xff0c;这里不过多介绍。 一、下面是run_simulation.bat文件的内容 : 注释的…
最新文章