mouseover陷阱

说明:在给元素绑定事件时,允许事件冒泡,而ie是不法指定是否冒泡。
当我们给一个html元素绑定一个mouseover事件时,如果该元素有子元素,且子元素和该元素之间有空隙,当鼠标从该元素经过时,mouseover会触发多次。
首先,鼠标多外面到元素上,但未经过子元素,正好处在元素及子元素的空隙之间,触发元素的mouseover事件。
然后,鼠标继续移动,由元素进入子元素,此时会触发子元素的mouseover事件,由于事件的会向上冒泡,触发mouse结束事件。
最后,鼠标继续移动,由子元素进入元素,此时又会触发元素的mouseover事件。
所以,当我们给元素绑定mouseover事件传时,通常会触发三次。在做一些效果时会发生抖或闪的现像。
有的浏览器定义了另外的事件mouseenter,但并不是所有浏览器都支持。
注意到mouseenter事件是鼠标在元素之外时,经过元素时才触发,从元素到子元素没有反应。
只要在mouseover事件中判断触发事件时候,相关元素(relatedTarget或fromElement)是元素或在元素内(元素是否是触发元素的祖先),不在则是mouseenter,若是则已经进入过,无需触发。
以上讲的同样适用mouseleave,只是相关元素是触发元素或在其定才执行mouseout事件,既mouseleave。
jquery已经实现好了,如果浏览器支持mouseenter,mouseleave事件直接使用,否则用mouseover,mouseout模拟。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值