您的位置:首页 > 其它

div层次嵌套问题

2012-08-06 22:46 169 查看
今天遇到一个问题,就是在外层div上设置监听函数:

onmousemove="changeI()" onmouseover="changeJ()" onmouseout="changeK()

但是当鼠标在该div内部移动时会触发onmouseout函数,但是我的鼠标没有移开外层div的范围啊,怎么会调用onmouseout函数呢?

原来div是嵌套关系的,当鼠标移动到内层div管辖的范围时,就是出了外层div的监听范围,所以会调用onmouseout函数。

有一个办法可以解决这个问题,就是为这个外层div创建一个兄弟div,也就是并行的意思,大小和该div一样,然后调整样式

使这个兄弟div完全罩住刚刚的外层div,这样对这个兄弟的div设置监听:onmousemove="changeI()" onmouseover="changeJ()" onmouseout="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++;

       }



onmouseover="d_2(this,event)" onmouseout="changeK()

这个函数的功能是判断移出区域时,移出的div是否是当前div,如果是就进行相应的操作。

当然移入也是可以调用这个函数的,只是要改一下:

    if(!relatedTarget)

       {

        obj.className="haha";

        document.getElementById('k').innerHTML = k++;
       }

里面的内容,让他做移入的操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  div function