注册 登录
编程论坛 JavaScript论坛

请教一个奇怪的冒泡问题

lili123456 发布于 2010-05-19 09:44, 639 次点击
最近写一菜单,在获取元素上不同的方法直接导致了冒泡发生与不发生,看代码:

fu.onmouseout=function(){
    this.style.display=""
    }

第一方法:上边是当鼠标离开时,fu隐藏,但是fu下边有a标签,鼠标离开a标签同样触发事件。于是又针对a标签写了一段阻止冒泡的代码。

for(var s=0;s<li.length;s++){
    li[s].onmouseover=function(){
        this.children[1].style.display=""
        }
    }

第二方法:上边是当鼠标离开时,li的下边第二个子元素隐藏,但是li下边的第二个子元素下边有a标签,鼠标离开a标签不触发事件。


这是为什么?
2 回复
#2
frankqnj2010-05-19 11:01
可以参考使用  ie专用 mouseenter mouseleave 代替 mouseover mouseout  非ie使用 事件代理模式  判断事件源 是否是 代理的 子节点 . 方法 很容易解决 你的困扰
#3
gupiao1752010-05-19 14:43
我记得IE的处理事件流用的是冒泡型事件,而DOM规则里也有类似方法!
你用 event.cancelBubble = true;试试阻止事件向上帽泡,相应的mozila浏览器里有类似方法event.stopPropagation;试试!

1