这篇文章主要分享了一则 JavaScript 阻止事件冒泡示例, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
之前遇到事件冒泡的问题,也去网上搜索了一番,结果大部分都是一样的代码,贴来用时也不太顺利。涉及到 FF 时,可以用 e.stopPropagation(); ,不知怎地我没用成功。不过我发现 FF 支持 e.cancelBubble = true; 的写法,经测试可行。就把代码贴在这里吧,省得以后到处找。IE 以前版本的兼容性还没测试,用到时再完善吧。
- //取消事件冒泡
- function stopBubble(e) {
- var evt = (e) ? e : window.event;//兼容FF
- evt.cancelBubble = true; //evt.stopPropagation(); FF下阻止冒泡,据说可以用
- };
另:
1、cancelBubble(html DOM Event 对象属性) :如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true。
2、stopPropagation(HTML DOM Event 对象方法):终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。
3、 preventDefault(HTML DOM Event 对象方法)通知浏览器不要执行与事件关联的默认动作。
例子:
function stopBubble(e)
{
if (e && e.stopPropagation)
e.stopPropagation()
else
window.event.cancelBubble=true
}
把这个 stopBubble(e) 函数放到你想要的阻止事件冒泡函数里面就可以阻止事件冒泡了
来源: