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

javascript鼠标移入移出事件

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

我来回答

4个回答

懂视网 时间:2022-05-12 05:45

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

一个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-05-12 02:53

两种办法:2级菜单要紧挨着1级菜单,至少有一部分是相连的,这样鼠标沿着相连的部分移动,就不会让2级菜单自动隐藏了;或者在1级菜单的mouseout事件中,不要立刻让2级菜单隐藏,而是延迟一段时间再隐藏,比如 var t = setTimeout("2级菜单.style.display='none'",1000); ,这样的话,只要在1秒内鼠标移到2级菜单上即可,当然,2级菜单的mouseover事件要立刻执行 clearTimeout(t);。特别注意:变量t一定要设为全局的。

热心网友 时间:2022-05-12 04:11

你要鼠标移出后1级菜单后2级菜单隐藏,又要鼠标移出1级菜单后移入2菜单前不隐藏 

但是你的一级菜单和二技菜单还不是连在一起 这个逻辑就本身有问题 

要实现你说的内容 方法有两个

1、修改排版 把一级菜单和二技菜单连在一起

2、对”鼠标移出后1级菜单后2级菜单隐藏”这个操作进行延时处理,示例


<HTML>
 <HEAD>
  <style>
  .menu1 {color:red;background:yellow;}
  .menu2_hide {color:blue;display:none;}
  .menu2_show {color:blue;background:red;}
  </style>
 </HEAD>


 <BODY>
 <span id='menu1' class='menu1'>menu1</span>
 <span id='menu2' class='menu2_hide'>menu2</span>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
var timer;
document.getElementById('menu1').onmouseover=function()
{
document.getElementById('menu2').className='menu2_show'
};
document.getElementById('menu1').onmouseout =function()
{
timer = setTimeout("document.getElementById('menu2').className='menu2_hide';",200);
};

document.getElementById('menu2').onmouseover=function()
{
clearTimeout(timer);
document.getElementById('menu2').className='menu2_show'
};
document.getElementById('menu2').onmouseout =function()
{
document.getElementById('menu2').className='menu2_hide'
};
  //-->
  </SCRIPT>
 </BODY>
</HTML>

热心网友 时间:2022-05-12 05:46

要么就hover的时候增加width来连接二级菜单

要么就二级菜单加个底层背景.大小可以接上一级菜单 不过只有右边可以离开二级菜单时隐藏了
或者做成点击事件.直接解决
关于js的鼠标移入移出事件

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

JavaScript OnMouseOut事件

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

...会显示一段简介内容,这是JavaScript事件中___事件应用。

【答案】:C 本题考查JavaScript语言关于鼠标事件基础知识。常见鼠标事件有以下8个:onMouseDown:鼠标键钮被按下。onMouseUp:鼠标键钮被释放弹起。onClick:单击鼠标键钮。onDblClick:鼠标键钮被双击。onContextMenu:弹出右键菜单。onMouseOver:鼠标移到目标上方。onMouseOut:鼠标移出目标上方。onMouseMove:鼠标...

javascript鼠标移入移出事件

两种办法:2级菜单要紧挨着1级菜单,至少有一部分是相连的,这样鼠标沿着相连的部分移动,就不会让2级菜单自动隐藏了;或者在1级菜单的mouseout事件中,不要立刻让2级菜单隐藏,而是延迟一段时间再隐藏,比如 var t = setTimeout("2级菜单.style.display='none'",1000); ,这样的话,只要在1秒内...

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

首先实现一个盒子。给这个盒子上绑定上onmouseover事件和onmouseout事件。发现它们不会发生什么问题。让我们创建一个B元素,让它被嵌套在A元素中,作为A的子元素。依旧只给外层父元素A绑定onmouseover事件和onmouseout事件,当鼠标移入移除A的子元素B的时候居然也发生了onmouseover事件和onmouseout事件。所以说当...

如何防止鼠标移出移入子元素触发mouseout和mouseover事件

事件触发了次 以上代码实现了我们的要求,可以消除鼠标指针移入或者移出子元素所带来的困扰,虽然例子只是mouseout事件的,对于mouseover事件也是如此,下面就介绍一下此代码的实现过程:一.实现原理:当触发这个事件的时候,事件对象都会有一个relatedTarget属性(标准浏览器支持,IE8和IE8以下浏览器需要...

JavaScript中的事件都有哪些阿?

onmouseout 当用户将鼠标指针移出对象边界时触发。onmouseover 当用户将鼠标指针移动到对象内时触发。onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。onmousewheel new 当鼠标滚轮按钮旋转时触发。onmove 当对象移动时触发。onmoveend 当对象停止移动时触发。onmovestart 当对象开始移动时触发。onpaste ...

javascript鼠标移入移出事件的若干问题?

那是因为你移出LI立马就隐藏了div,当然移不进去,这种情况你只能用定时器,让div延时消失,在延时的这段时间里如果移入div,就把定时器关闭掉,div就不会消失了

如何实现鼠标移入时,显示div中的文字呢?

1、需要结合JavaScript实现,首先打开sublime text编辑器,新建一个html文件,写入一个标签和弹出层div,分别设置它们的鼠标移入和移出事件;最后简单的设置两个html标签的样式,让弹出层默认隐藏,设置弹出层的大小背景等属性:2、接着在下方的script标签设置两个函数,一个是鼠标移入时触发用来显示div,另...

javascript的事件模型有哪些

onmouseout: 鼠标移出时监听的事件 onmouseover: 鼠标移进时监听的事件 键盘事件:keydown:键盘按下一个键时的监听事件 keypress: 键盘按(按下并弹起)一个键时的监听事件 keyup: 键盘弹起一个键时的监听事件 HTML事件:load:所有的东西全部被加载后触发的事件 abort:阻止安全装在 error:当页面发生...

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