今天遇到一个问题,就是在外层div上设置监听函数:
οnmοusemοve="changeI()" οnmοuseοver="changeJ()" οnmοuseοut="changeK()
但是当鼠标在该div内部移动时会触发onmouseout函数,但是我的鼠标没有移开外层div的范围啊,怎么会调用onmouseout函数呢?
原来div是嵌套关系的,当鼠标移动到内层div管辖的范围时,就是出了外层div的监听范围,所以会调用onmouseout函数。
有一个办法可以解决这个问题,就是为这个外层div创建一个兄弟div,也就是并行的意思,大小和该div一样,然后调整样式
使这个兄弟div完全罩住刚刚的外层div,这样对这个兄弟的div设置监听:οnmοusemοve="changeI()" οnmοuseοver="changeJ()" οnmοuseοut="changeK()
就可以达到效果了。但是代价就是原来div内部的触发都无效了。
--------------------------------------2012.08.07
今天又查了一下,发现了一个更好的办法:
function d_2(obj,e)
{
var e = window.event || e, relatedTarget = e.toElement || e.relatedTarget;
while(relatedTarget && relatedTarget != obj)
relatedTarget = relatedTarget.parentNode;
if(!relatedTarget)
{
obj.className="haha";
document.getElementById('k').innerHTML = k++;
}
}
οnmοuseοver="d_2(this,event)" οnmοuseοut="changeK()
这个函数的功能是判断移出区域时,移出的div是否是当前div,如果是就进行相应的操作。
当然移入也是可以调用这个函数的,只是要改一下:
if(!relatedTarget)
{
obj.className="haha";
document.getElementById('k').innerHTML = k++;
}
里面的内容,让他做移入的操作