问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于js鼠标移入移出事件

发布网友 发布时间:2022-04-23 21:54

我来回答

2个回答

懂视网 时间:2022-04-20 04:47

这次给大家带来鼠标移出事件的案例以及详解,使用鼠标移出事件的注意事项有哪些,下面就是实战案例,一起来看一下。

一个mouseout事件引发的问题
1. 遇到的问题
最近上课做一个效果,显示一个模拟QQ好友列表,默认是隐藏的,鼠标移动到浏览器右边界的时候显示,离开好友列表框的时候隐藏。

代码如下:

Insert title here
#friends{
 border:1px solid #ff0000;
 width:200px;
 height:400px;
 position:absolute;
 right:0px;
 top:20px;
 background: #abcdef;
 display:none
 }
 #line{
 width:1px;
 height:800px;
 float:right;
 }
 var inter;
 jQuery(function(){
 /*鼠标移动到右边界线,好友列表框显示*/  ("#line").mouseover(function(){  $("#friends").show(1000);  }); /*鼠标离开好友框,隐藏*/
("#friends").bind('mouseout',function(event){
  $(this).hide(1000); 
  }); 
 });

好友列表

 <p style="height:25px"><span>会飞的鱼</span><img style="width:18px;height:18px;" src="images/boy.png"/></p>
 <p style="height:25px"><span>会飞的鱼</span><img style="width:18px;height:18px;" src="images/boy.png"/></p>
 <p style="height:25px"><span>会飞的鱼</span><img style="width:18px;height:18px;" src="images/boy.png"/></p>
 <p style="height:25px"><span>会飞的鱼</span><img style="width:18px;height:18px;" src="images/boy.png"/></p>
<p id="line"></p>

运行界面:
这里写图片描述
上面的mouseout事件出了问题,鼠标移动到右边界显示好友框没问题,当移动到好友昵称上面时候好友框消失了,这是为何?
原因是好友框内有好多子元素p,每个p对应一个好友。此时鼠标移动到子元素上面触发了父元素的mouseout事件。更为糟糕的是子元素p里面还有span,image子元素,这样就会触发子元素p的mouseout,继而冒泡到最外层的好友列表的p。
2. 如何解决
方法一:
思路:判断当前鼠标指向的元素是否是其子元素,如果是子元素就不隐藏,直接return,否则,隐藏好友列表。

给好友列表p注册mouseout代码:

/鼠标离开好友框,隐藏/ (“#friends”).bind(‘mouseout’,function(event){  var tar=event.target || event.srcElement;//鼠标离开的元素  var totar=event.relatedTarget || event.toElement;//鼠标指向的元素  //如果鼠标指向了自己的子元素,则不触发mouseout事件  if(
(this).find(totar).size()>0||this==totar){ 
  return; 
  } 
  //否则,如果不是指向子元素,就表示鼠标已经离开了p 
  else { 
  console.log(tar.id+’–’+totar.id); 
  $(this).hide(1000); 
  } 
  });


说明:
在发生mouseover和mouseout事件时,还会涉及更多的元素。这两个事件都会涉及把鼠标指针从一个元素的边界之内移到另一个元素边界之内。对mouseover事件而言,事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素。类似地,对mouseout事件而言,事件的主目标是失去光标的元素,而相关元素则是获得光标的元素。
DOM通过event对象的relatedTarget属性提供了相关元素的信息。这个属性只对于mouseover和mouseout事件才包含值;对于其他事件,这个属性的值是null。IE不支持realtedTarget属性,但提供了保存着同样信息的不同属性。在mouseover事件触发时,IE的fromElement属性中保存了相关元素;在mouseout事件出发时,IE的toElement属性中保存着相关元素。
以上代码为兼容不同浏览器的写法。如果觉得第一种方法麻烦,可以参照以下方法。

方法二:
思路:给p注册mouseleave事件,该事件和mouseout区别就在于,当鼠标移动到本元素内的子元素的时候不会触发mouseleave,只有真正离开了这个元素才能触发,而且不支持冒泡。

代码:

/鼠标离开好友框,隐藏/ (“#friends”).bind(‘mouseleave’,function(event){
(this).hide(1000); 
  } 
  );

代码一下子精简了好多。运行结果是一样的。


说明:
mouseover与mouseenter
不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。

只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

mouseout与mouseleave

不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。

只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
官方解释:
这里写图片描述
M啊啊DN这段解释说只有IE浏览器支持mouseleave和mouseenter事件,其他浏览器暂不支持,火狐其实是支持的,chrome和Safari等浏览器未测试。但我们如果用jQuery注册mouseenter和mouseleave函数,可以支持常见的所有浏览器(均已测试),因为jQuery内部做了封装。写法见上面代码。
3.小结
如果给元素注册鼠标覆盖和离开事件,分两种情况:
1.如果所选元素内没有子元素影响,可以考虑直接用mouseover和mouseout。
2.如果有子元素影响(含有子元素),可以采用mouseenter和mouseleave,防止事件冒泡。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何使用css3实现3d立体特效

javascript如何实现小球跳动效果

JS设计模式之原型模式详解

热心网友 时间:2022-04-20 01:55

可以把新弹出的div写在原盒子标签里面,因为你的事件是写在原盒子即弹出盒子的父级盒子,当鼠标移开原盒子到弹出盒子时,因为弹出盒子还在原盒子内,所以不会出发鼠标移出的效果,只有鼠标移出了新盒子,才会触发
关于js的鼠标移入移出事件

在JavaScript中,处理鼠标移入和移出事件主要使用onmouseenter、onmouseover、onmouseleave和onmouseout属性。具体代码如下:为id为"selectModal"的元素绑定鼠标移入事件:document.getElementById("selectModal").onmouseenter = function() { console.log('鼠标移入')} 绑定鼠标移出事件:document.getElementB...

JS鼠标事件大全 JS鼠标事件有哪些

1、如图首先在一个文件夹下创建index.html文件。2、然后用可编辑文本文件的软件打开index.html文件,index.html的初始内容如图。3、js的鼠标事件主要有onclick:单击事件ondbclick:双击事件onmouseover:鼠标移入事件onmouseout:鼠标移出事件onmousedown:鼠标按下事件onmouseup:鼠标松开事件。首先实现鼠标左键...

JavaScript OnMouseOut事件

javascript onmouseover和onmouseout事件 onmouseover和onmouseout鼠标移入移出时触发的事件:onmouseover 用户鼠标移入元素时触发的事件。并执行onmouseover调用的函数。onmouseout 用户鼠标移开元素时触发的事件。并执行onmouseout调用的函数。onmouseover和onmouseout 这两个事件在javascript中较常用。下面通过一个示例更...

js鼠标移动事件(onmouseover,onmouseout)放在和控件中有什么不同?_百...

依旧只给外层父元素A绑定onmouseover事件和onmouseout事件,当鼠标移入移除A的子元素B的时候居然也发生了onmouseover事件和onmouseout事件。所以说当鼠标移入移除A的子元素B的时候,B的onmouseover事件和onmouseout事件会触发,但是它自己没有这两个事件啊,就把这两个事件传递给了它的父元素A,A有这两个事件...

关于选项卡,JS鼠标移入移出事件怎么改成点击事件?

mouseenter 改成 click 放在 head 不生效是因为选项卡的元素还没有生成,所以这个事件无法绑定到目标对象上。可以改成下面的代码,在网页加载完毕后再绑定事件,这样就可以放在 中:(document).ready(function(){ (".dt_tab li").mouseenter(function () { if(! $(this).hasClass(".showed"...

js鼠标移入移出显示和隐藏出现bug,隐藏之后自己又显示了?

看看隐藏后是不是因为元素隐藏掉了,页面元素发生位移之类的,导致你又触发了移出事件。。。

JS表单代码获得焦点自动清除提示,失去焦点恢复默认提示

第一个问题的解决办法:window.onload = function() { var keyWord = document.getElementsByName('keyWord')[0]; //搜索name为keyWord的DOM对象 keyWord.onfocus = function() { keyWord.value = ''; }; keyWord.onblur = function() { keyWord.value = '搜索您感兴趣...

js该程序为什么鼠标移入显示,移出不隐藏

js该程序为什么鼠标移入显示,移出不隐藏。其实,没有为什么一说的,“移出不隐藏 ”的话,是因为你没有实现这个功能,if判断不到位,自然会出现你说的问题。js编写的话,边写边调,不要全写完了再去运行找问题,这样太费事儿,还不一定能找准。

用js写鼠标移入li,div显示,移出消失

是 block,不是 bolck !!!

js鼠标移出触发算法事件 感谢大牛帮忙

先定义a=输入框1.value / 输入框2.value 然后通过if()else{}判断a的值

鼠标移出移入事件 js鼠标移开输入框事件 js鼠标移入移出放大 js鼠标移入移出隐藏和实现 js鼠标移入移出li变色 js鼠标移入移出显示和隐藏 jquery鼠标移入移出隐藏显示 jquery鼠标移入移出变色 jq鼠标移入移出
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
五年级语文知识点复习 十二指肠溃疡引起腹泻吃什么药好得快? 纯真岁月剧情简介 纯真岁月分集剧情 实用新型专利能赚多少钱? 丢失的护照已补办,现需要补签证,可以随到随签吗?(韩国签证) 别董大诗的意思 重装系统后,装软件一直装不上 新冠期间如何安全、合理的进行锻炼? 【2024择校分析】中国海洋大学计算机考研 鼠标移出屏幕右侧 为什么我电脑的鼠标往右边移动总是移出屏幕呢? 消逝的光芒鼠标怎样移出界面? 鼠标往右会移出桌面怎么办? 为什么我的鼠标可以移出电脑屏幕 请问游戏窗口化后鼠标怎么移出呢? 鼠标光标能移出电脑屏幕右方范围怎么办?? 我的鼠标向右和向下会移出屏幕 怎么解决 怎么把鼠标移出屏幕 jquery鼠标移入移出 LOL怎么把鼠标移出窗口 windows10 鼠标移出屏幕右边怎么办? 小学生吃什么保健食品对眼睛好 小学生怎样保护眼睛的最好事例? 95年到98年小学都是有什么科目 如何提高数学成绩 求98年数学建模A题论文,急需!高分100! 98年的时候数学因为所以怎么写? 好难的数学题(我们98年小学的时候遇到的,突然想起) 98年安徽高考考几门? javascript鼠标移入移出事件 lol怎样在窗口化条件下把鼠标移出框内 VMware Workstation 虚拟机怎么设置才能把鼠标移出,不是按快捷键!_百... 鼠标的移入移出事件怎么写? Jquery鼠标移入和移出、点击事件,点击变色,鼠标移出又变回原来的样式... 个体工商户应该怎么报税呢? 个体工商户网上报税怎么操作步骤 初三了,该买什么辅导书 什么辅导资料最适合初三的学生 初三的教辅资料用什么好啊 初三学生英语辅导书有哪些推荐? 初三买那种辅导资料好 初三辅导书哪些好 初三用什么辅导书好? 初三要买什么辅导资料可以快速提高成绩? 超市个体工商户怎么报税 初三买什么辅导书对中考比较有好处(人教版) 个体工商户报税流程 初三(上)课外辅导资料买什么好? 初三有什么好的学习方法或辅导书推荐?