javascript完美解决onMouseOver、onMouseOut冒泡事件方法简单
2011-12-13 15:53
239 查看
javascript完美解决onMouseEnter、onMouseLeave、onMouseOver、onMouseOut冒泡事件的一种思路,兼容各种浏览器.
js冒泡事件的产生: 当鼠标移动到div区域内的table、img、a等元素时触法div本身的onmouseout事件. 由于鼠标停留在div标签内部元素上,触发div的onmouseout事件肯定不是我们想要的结果,于是便产生了冒泡事件.
js冒泡事件的解决方法: 当然网上解决的方法有很多,大多代码伸长,不容易理解. 而我们讲的代码非常简短,确容易理解.
原理就是:当触发div的onmouseout事件时,判断触法事件的元素是不是div的子元素,如果是则中断执行即可.
核心代码用到一个contains方法。如果A元素包含B元素,则返回true,否则false。
IE: event.toElement ; // 这个方法用来返回IE下触法事件的元素
非IE: event.relatedTarget; // 这个方法用来返回非IE下触法事件的元素
代码如下:
<div onmouseout="hiddenObj(event,this);"> <a href=#>冒泡事件超链接</a> </div>
<script type="text/javascript" >
function hiddenObj(theEvent,obj){ //theEvent用来传入事件,Firefox的方式
var browser=navigator.userAgent; //取得浏览器属性
if (browser.indexOf("MSIE")>0){ //如果是IE
if (obj.contains(event.toElement)) return; // 如果是子元素则结束函数
}else{ //如果是Firefox
if (obj.contains(theEvent.relatedTarget)) return; // 如果是子元素则结束函数
}
/*要执行的操作*/
obj.style.display='none';
}
</script>
js冒泡事件的产生: 当鼠标移动到div区域内的table、img、a等元素时触法div本身的onmouseout事件. 由于鼠标停留在div标签内部元素上,触发div的onmouseout事件肯定不是我们想要的结果,于是便产生了冒泡事件.
js冒泡事件的解决方法: 当然网上解决的方法有很多,大多代码伸长,不容易理解. 而我们讲的代码非常简短,确容易理解.
原理就是:当触发div的onmouseout事件时,判断触法事件的元素是不是div的子元素,如果是则中断执行即可.
核心代码用到一个contains方法。如果A元素包含B元素,则返回true,否则false。
IE: event.toElement ; // 这个方法用来返回IE下触法事件的元素
非IE: event.relatedTarget; // 这个方法用来返回非IE下触法事件的元素
代码如下:
<div onmouseout="hiddenObj(event,this);"> <a href=#>冒泡事件超链接</a> </div>
<script type="text/javascript" >
function hiddenObj(theEvent,obj){ //theEvent用来传入事件,Firefox的方式
var browser=navigator.userAgent; //取得浏览器属性
if (browser.indexOf("MSIE")>0){ //如果是IE
if (obj.contains(event.toElement)) return; // 如果是子元素则结束函数
}else{ //如果是Firefox
if (obj.contains(theEvent.relatedTarget)) return; // 如果是子元素则结束函数
}
/*要执行的操作*/
obj.style.display='none';
}
</script>
相关文章推荐
- jquery mouseout事件冒泡解决方法
- JS冒泡事件的快速解决方法
- Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)
- javascript中onmouse事件在div中失效问题的解决方法
- javascript事件冒泡、捕获及阻止方法终极解答
- IE8的JavaScript点击事件(onclick)不兼容的解决方法
- Android编程心得---捕捉Home键事件的完美解决方法
- onMouseOver 和 onMouseOut事件冒泡
- Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)
- 解决js中onMouseOut事件冒泡的问题
- 基于mouseout和mouseover等类似事件的冒泡问题解决方法
- javascript小数精度丢失的完美解决方法
- javascript 的button onclick事件不起作用的解决方法
- 兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法
- jQuery事件 鼠标移动效果 onmouseover方法与onmouseout方法
- javascript 冒泡 解决过多节点绑定事件的问题
- JavaScript中解决Microsoft.XMLHTTP乱码的最简单方法
- javascript中onmouse事件在div中失效问题的解决方法
- javascript使用for循环批量注册的事件不能正确获取索引值的解决方法