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

行为由哪几部分组成,列举常见的鼠标事件

发布网友 发布时间:2022-04-22 21:07

我来回答

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

常见的鼠标事件:
onDblClick 鼠标双击事件
onMouseDown 鼠标上的按钮被按下了
onMouseUp 鼠标按下后,松开时激发的事件
onMouseOver 当鼠标移动到某对象范围的上方时触发的事件
onMouseMove 鼠标移动时触发的事件

onload 和 onunload 事件
onload 和 onunload 事件会在用户进入或离开页面时被触发。
onload 事件可用于检测访问者的浏览器类型和浏览器版本,并基于这些信息来加载网页的正确版本。
onload 和 onunload 事件可用于处理 cookie。

onchange 事件
onchange 事件常结合对输入字段的验证来使用。

onmouseover 和 onmouseout 事件
onmouseover 和 onmouseout 事件可用于在用户的鼠标移至 HTML 元素上方或移出元素时触发函数

onmousedown、onmouseup 以及 onclick 事件
onmousedown, onmouseup 以及 onclick 构成了鼠标点击事件的所有部分。首先当点击鼠标按钮时,会触发 onmousedown 事件,当释放鼠标按钮时,会触发 onmouseup 事件,最后,当完成鼠标点击时,会触发 onclick 事件。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我看曹刿是一个什么样的人 作文 急急急 三赞曹刿300字作文 作文 我心中的英雄曹刿300 关于翻译机离线使用的效果怎么样? 古汉语中有“不可以”这一用法吗? 文言文中"可以"的古今异意 独特嗓音的特征,一般别人模仿起来比较难 我现在还有一个月机会到13岁,想改变一下声音,还有我是个男生 根据《建筑安装工程费用项目组成》(建标[-2013144号),应列入规费的是... 我女儿的电瓶车发票,用我的身份证好上牌照吗,因她本人在异地,请帮... 青岛二手车过户买方需要什么手续 铁路货运查询电话号码多少 VB鼠标移动事件 外来户在青岛买二手车需要什么手续?过户上牌呢? 问机场托运的是应该打机场哪个部门的电话啊?号码是? 合肥行李托运快递电话是多少 青岛现在二手车上牌需要什么 请教MFC中鼠标移动事件的处理 上海虹桥机场货运部 上海虹桥机场托运部电话021-51061752 谁知道青岛二手车过户流程和税费情况? html鼠标移动触发什么事件 德邦快递的电话号码是多少 鼠标的移动事件 物流托运怎么联系? onMouseover和onMousemove有什么区别 同城寄快递电话是多少? VB 关于鼠标移动事件 上海得斯威国际货运有限公司电话是多少? JS鼠标事件大全 JS鼠标事件有哪些 全球国际货运代理(中国)有限公司电话是多少? 在青岛去哪里办理二手车过户手续 铁路物流电话是多少 java鼠标事件都有什么方法? 青岛二手车过户流程 如何在Grid中响应鼠标移动事件 外地二手车怎样过户到青岛?有什么规定和要求?怎样才能知道二手车是国四标准啊? Java 怎样用mouseMoved()实现鼠标移动触发事件 青岛去哪里办理二手车过户手续啊!! 在vue脚手架中元素绑定鼠标移动事件onmousemove,当鼠标按下拖拽元素... 青岛二手车过户限5年吗? FLASH鼠标移动触发事件怎么弄啊? 青岛二手车过户 青岛二手车提档过需要原车主吗? 从山东青岛看中了一辆二手车,想过户到山东滨州,过户的话需要和车主办理什么手续以及费用?我到滨州落户 青岛二手车过户费是多少?是不是800元封顶? 外地二手车怎样过户到青岛 主板B360系列是B360m-a怎么样,小板b360m-a会不会没有大板好? 青岛,已找到买家,到哪办二手车过户 外地二手车可以过户到青岛吗 我是外地人 想在青岛城阳买辆二手车 过户在城阳本地 本人都需要什么证件 谢谢