层触发事件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 " />
<title> 无标题文档 </title>
<style type= "text/css ">
div{height:100px; width:100px; background:red}
span{height:20px; width:20px; background:blue}
</style>
</head>
<body>
<div id= "div1 "> <span id= "span1 "> xxxx </span> </div>
</body>
</html>
<script type= "text/javascript ">
document.getElementById( "div1 ").onmouseover =aa;
document.getElementById( "div1 ").onmouseout = bb;
function aa()
{
alert( "1 ");
}
function bb()
{
alert( "2 ");
}
</script>
需要onmouseover和onmouseout无视蓝色 <span> 区域,而只在进出 <div> 时触发.
------解决方案-------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns= "http://www.w3.org/1999/xhtml ">
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 " />
<title> 无标题文档 </title>
<style type= "text/css ">
div{height:100px; width:100px; background:red}
span{height:20px; width:20px; background:blue}
</style>
</head>
<body>
<div id= "div1 "> <span id= "span1 "> xxxx </span> </div> <br>
<input type=text id=txt value= " ">
</body>
</html>
<script type= "text/javascript ">
document.getElementById( "div1 ").onmouseover =aa;
document.getElementById( "div1 ").onmouseout = bb;
function aa()
{
if(event.toElement.tagName!= "SPAN ")
document.getElementById( "txt ").value= "鼠标在div里 ";
}
function bb()
{
document.getElementById( "txt ").value= "鼠标在div外 ";
}
</script>
------解决方案--------------------首先可以肯定你这个不能用eventbubble来解决
以前我也遇到类似的问题,
是关于menu的
没有别的办法,只能瞎搞啦
-----------------
我是这么做的:
-----------------
事件 不直接指向 所要执行的 响应函数
而是指向另外一个“中间”函数(就那个意思啦)
这个“中间”函数再调用那个 实际的响应函数
关键在于如何调用,和怎样取消调用
我用settimeout来调用
试想:
当鼠标从div 移到到 span 上面
这个过程所需的 时间间隔 理论上为零
我们的 settimeout 是需要一定时间间隔后才执行的
就是说 span 的 onmouseover 事件产生后 settimeout 的目标函数还没有执行
因此,我们可以利用这个时间差 来取消那个函数的执行 (即用cleartimeout)
-----------
大概就是这个意思,其他情况类似,
希望对你解决此类问题有用。。。