子节点 onmouseover 触发了 父节点的 onmouseout,怎么解决?
同时发现 子节点的 onmouseout 也会触发父节点的 onmouseout
如果你引用了jQuery框架
event.stopPropagation() 这个就可以了
用法如下:
$('#element').click(function(evenet)
{
// 执行逻辑
e.stopPropagation(); //这样就能取消事件的冒泡了
})
如果用的原生的javascript,那就需要写js的兼容了
非ie浏览器
e.stopPropagation();
ie浏览器
window.event.cancelBubble = true;
依然不行啊
@foxidea:
看了你的代码,在ie 6和firefox测试了下,
1.e.stopPropagation(); window.event.cancelBubble = true; 能够停止事件冒泡的 为什么要这样说了,请看第2点
2. 你上面所说的子节点 onmouseover 触发了 父节点的 onmouseout ,其实不然,你如果在子节点里alert一下的话,你会发现父节点的mouseout 事件是在子节点的mouseover之前。发现什么了没有!父节点的mouseout事件不是子节点的冒泡事件触发的,所以说这个事件的冒泡无关。
你可以参考下我的解决方案:
就是在父节点的事件里对mousetout将要进入的元素判断其是否属于该节点的子元素
var e=e||window.event; //获取事件
var obj=e.relatedTarget||e.toElement; //获取mouseout 进入元素
obj找到了,只需判断他是不是绑定事件元素的子元素就可以了,如果是就不执行后面的事件 否则就执行
return false
这个应该就是你代码写的有问题了吧。。。代码的设计有问题