首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

mouseover圈套

2012-11-05 
mouseover陷阱说明:在给元素绑定事件时,允许事件冒泡,而ie是不法指定是否冒泡。当我们给一个html元素绑定一

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

热点排行