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

embedded/2024/9/25 8:26:22/

顺便整理一下各种触发

  • js触发 

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

    window.onload=function(){//绑定元素,执行对应事件 鼠标双击(ondblclick)//鼠标双击事件ondblclickdocument.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,因为我们不传递具体的handlerremovePassiveEventListener(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.ppmy.cn/embedded/29250.html

相关文章

测算sample gpt

测算代码 import pandas as pd import matplotlib.pyplot as pltlosspd.read_pickle("loss_8.pkl") plt.plot(loss) losspd.read_pickle("loss_16.pkl") plt.plot(loss) losspd.read_pickle("loss_4_8.pkl") plt.plot(loss) losspd.read_pickle(…

树莓派控制步进电机(上):硬件连接

目录 说明 硬件连接 DM542的连接方法 树莓派的连接方法 参考文献 说明 最近需要测试树莓派控制步进电机的功能&#xff0c;在查阅网上资料的基础上做了一些整理和测试&#xff0c;特别记录在此。这里我们使用的是树莓派4B开发板&#xff0c;步进电机为6线两相步进电机&am…

【Java】HOT100 贪心算法

目录 理论基础 一、简单贪心 LeetCode455&#xff1a;分发饼干 二、中等贪心 2.1 序列问题 LeetCode376&#xff1a;摆动序列 2.2 贪心股票问题 LeetCode121&#xff1a;买卖股票的最佳时机 LeetCode121&#xff1a;买卖股票的最佳时机ii 2.3 两个维度权衡问题 LeetCode135&…

JavaScript百炼成仙自学笔记——11

函数七重关之四&#xff08;闭包&#xff09; function add(){return function(){} } function test(){var a 0;return function(){console.log(a);} } 这样子调用&#xff1a;test()(); 这就是闭包&#xff01; 这样做有什么好处呢&#xff1f; //先获取这个内部函数 var i…

张鸣独到解读:规矩与自信的政治影响

在当今多变的政治舞台上&#xff0c;学者张鸣教授以其犀利而深邃的视角&#xff0c;对规矩与自信提出了新的解读。他的言论不仅引发了公众的广泛关注&#xff0c;也为我们提供了思考社会政治问题的一个新的角度。张教授指出&#xff0c;规矩并非僵化的教条&#xff0c;而应是动…

CVE-2022-2602:unix_gc 错误释放 io_uring 注册的文件从而导致的 file UAF

前言 复现该漏洞只是为了学习相关知识&#xff0c;在这里仅仅做简单记录下 exp&#xff0c;关于漏洞的详细内容请参考其他文章&#xff0c;最后在 v5.18.19 内核版本上复现成功&#xff0c;v6.0.2 复现失败 漏洞利用 diff --git a/include/linux/skbuff.h b/include/linux/s…

【Vue 2.x】学习vue之二组件

文章目录 Vue二组件第五章es6文件导入出1、导出export 组件&#xff08;component&#xff09;1、定义2、模块化与组件化3、组件的分类1、非单文件组件非单文件三步骤创建组件标准写法简化写法组件的嵌套非单文件的不足之处 2、单文件组件vue单文件组件的使用脚手架创建项目重点…

ubuntu neo4j 下载与配置(一)

neo4j 官方下载页面 https://neo4j.com/deployment-center/#community 进入页面之后&#xff0c;往下滑 咱们在下载neo4j时&#xff0c;官方可能要咱们填写一下个人信息&#xff0c;比如&#xff1a;姓名组织结构邮箱等&#xff1a; 咱们可以观察一下&#xff0c;ne4j的下载链…