event.stopPropagation(); // 事件停止冒泡,即不让事件再向上传递,但是此事件的默认行为仍然被执行,如点击一个链接,调用了event.stopPropagation(),链接仍然会被打开。
event.preventDefault(); // 取消了事件的默认行为,如点击一个链接,链接不会被打开,但是此事件仍然会传递给更上一层的先辈元素。
event.preventDefault(); // 取消了事件的默认行为,如点击一个链接,链接不会被打开,但是此事件仍然会传递给更上一层的先辈元素。
在事件处理函数中使用 return false; 相当于同时调用了event.stopPropagation()和event.preventDefault(),事件的默认行为不会被执行,事件也不会冒泡向上传递。
示例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xHTML1/DTD/xHTML1-transitional.dtd">
<HTML XMLns="http://www.w3.org/1999/xHTML" lang="gb2312">
<head>
<title> 阻止JS事件冒泡传递(cancelBubble 、stopPropagation)</title>
<meta name="keywords" content="JS,事件冒泡,cancelBubble,stopPropagation" />
<mce:script type="text/javascript"><!--
function doSomething (obj,evt) {
alert(obj.id);
var e=(evt)?evt:window.event;
if (window.event) {
e.cancelBubble=true; // ie下阻止冒泡
} else {
//e.preventDefault(); // 链接不会被打开,但事件仍会向上传递
e.stopPropagation(); // 其它浏览器下阻止冒泡,但链接仍会被打开
}
}
// --></mce:script>
</head>
<body>
<div id="parent1" οnclick="alert(this.id);" style="width:250px;background-color:yellow">
<p>This is parent1 div.</p>
<div id="child1" οnclick="alert(this.id);" style="width:200px;background-color:orange">
<p>This is child1.</p>
</div>
<p>This is parent1 div.</p>
</div>
<br />
<div id="parent2" οnclick="alert(this.id);" style="width:250px;background-color:cyan;">
<p>This is parent2 div.</p>
<div id="child2" οnclick="doSomething(this,event);" style="width:200px;background-color:lightblue;">
<a href="http://www.baidu.com" mce_href="http://www.baidu.com">This is child2. Go to Baidu. Will bubble.</a>
</div>
<p>This is parent2 div.</p>
</div>
</body>
</HTML>
来源:http://blog.csdn.net/krisy0102/article/details/6050545