[转]阻止事件冒泡
2010-01-05 07:28
155 查看
阻止事件冒泡 在html中触发的事件会往上冒泡,直到最上层.比如
Click me, twice alert
源码:
<div onclick="alert('div is clicked')">
<a onclick="alert('a is clicked'); return false;" href="#">Click me, twice alert</a>
</div>
点击click,会弹出两个alert提示框.
防止触发上层div的方法是在点击时事件中加上:event.cancelBubble=true;
如下:
Click me, Once alert
源码:
<div onclick="alert('div isn\'t clicked')">
<a onclick="alert('a is clicked'); event.cancelBubble=true;return false;" href="#">Click me, Once alert</a>
</div>
这种做法是从Bret Taylor的blog上面抄来的,原文地址在这里(好像是,不是也别怪我。)。对于避免ajax应用中不同层的事件干扰很有用的。
先说一下“取消(cancel)”和“停止(stop)”的区别:说白了,停止就是当事件发生后,阻止它自动冒泡到父容器内;而取消则是当冒泡发生到父容器之后停止,也就是不在当前元素中响应。天哪,这东西说起来话长了,代码说话:
js 代码
Js代码
![](http://heimuad.javaeye.com/images/icon_copy.gif)
function stopEvent(e) {
if (!e) e = window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
var link = document.getElementById("link");
link.onclick = stopEvent;
function stopEvent(e) { if (!e) e = window.event; if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } } var link = document.getElementById("link"); link.onclick = stopEvent;
以上这一段是阻止父容器事件的
js 代码
Js代码
![](http://heimuad.javaeye.com/images/icon_copy.gif)
function cancelEvent(e) {
if (!e) e = window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
var link = document.getElementById("link");
link.onclick = function(e) {
cancelEvent(e);
stopEvent(e);
}
function cancelEvent(e) { if (!e) e = window.event; if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } } var link = document.getElementById("link"); link.onclick = function(e) { cancelEvent(e); stopEvent(e); }
以上这一段是阻止子元素事件的
Click me, twice alert
源码:
<div onclick="alert('div is clicked')">
<a onclick="alert('a is clicked'); return false;" href="#">Click me, twice alert</a>
</div>
点击click,会弹出两个alert提示框.
防止触发上层div的方法是在点击时事件中加上:event.cancelBubble=true;
如下:
Click me, Once alert
源码:
<div onclick="alert('div isn\'t clicked')">
<a onclick="alert('a is clicked'); event.cancelBubble=true;return false;" href="#">Click me, Once alert</a>
</div>
这种做法是从Bret Taylor的blog上面抄来的,原文地址在这里(好像是,不是也别怪我。)。对于避免ajax应用中不同层的事件干扰很有用的。
先说一下“取消(cancel)”和“停止(stop)”的区别:说白了,停止就是当事件发生后,阻止它自动冒泡到父容器内;而取消则是当冒泡发生到父容器之后停止,也就是不在当前元素中响应。天哪,这东西说起来话长了,代码说话:
js 代码
Js代码
![](http://heimuad.javaeye.com/images/icon_copy.gif)
function stopEvent(e) {
if (!e) e = window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}
var link = document.getElementById("link");
link.onclick = stopEvent;
function stopEvent(e) { if (!e) e = window.event; if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } } var link = document.getElementById("link"); link.onclick = stopEvent;
以上这一段是阻止父容器事件的
js 代码
Js代码
![](http://heimuad.javaeye.com/images/icon_copy.gif)
function cancelEvent(e) {
if (!e) e = window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
var link = document.getElementById("link");
link.onclick = function(e) {
cancelEvent(e);
stopEvent(e);
}
function cancelEvent(e) { if (!e) e = window.event; if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } } var link = document.getElementById("link"); link.onclick = function(e) { cancelEvent(e); stopEvent(e); }
以上这一段是阻止子元素事件的
相关文章推荐
- vue 阻止事件冒泡和取消默认行为
- js冒泡事件阻止
- js中事件冒泡及阻止冒泡的一小段code
- js阻止事件冒泡
- javascript-阻止事件冒泡和事件默认行为
- jquery阻止事件冒泡的两种方法
- Jquery阻止事件冒泡
- jquery阻止事件冒泡
- Jquery阻止事件冒泡 event.stopPropagation
- jQuery阻止事件冒泡 原文http://book.51cto.com/art/200807/79154.htm
- Js 冒泡事件阻止
- JavaScript事件冒泡和阻止默认行为和阻止事件冒泡(转载)
- javascript的阻止默认事件和阻止冒泡事件
- 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
- jquery阻止事件冒泡
- 事件冒泡和默认行为阻止
- 阻止JavaScript事件冒泡传递
- 阻止js事件冒泡的例子(cancelBubble 、stopPropagation)
- 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
- 关于jquery stopPropagation()阻止冒泡事件