如果
是在
有一个onclick事件,
的点击事件时,不触发父元素的点击事件,那么就需要调用如下函数:
代码如下:
function stopBubble(e){
if(e&&e.stopPropagation){//非IE
e.stopPropagation();
}
else{//IE
window.event.cancelBubble=true;
}
}
如果要阻止默认事件的触发,即默认的href事件,那么就需要调用如下函数:
代码如下:
function stopDefault( e ) {
//阻止默认浏览器动作(W3C)
if ( e && e.preventDefault )
e.preventDefault();
//IE中阻止函数器默认动作的方式
else
window.event.returnValue = false;
return false;
}
要想达到你个效果,只需要在body上绑定一个onclick事件就可以了。
代码如下:
window.onload = function() {
document.body.onclick = function(event) {
//ie和w3c标准的event获取方式不同
event = event ? event.target : window.event.srcElement;
//此处就是利用冒泡,在body上绑定click事件
//如果事件源是a元素,并且a元素中的html为123123,ul显示
if(event.targetName='A' && event.innerHTML='123123') {
document.getElementById("ul").style.display = "";
} else if (e.tagName == "BODY") {
//如果事件源是body
document.getElementById("ul").style.display = "none";
}
}
}
javascript禁止冒泡可以使用事件的 .stopPropagation()方法,该方法可以完全阻止事件冒泡。
window.onload = function () {
document.body.onclick = function(e) {
e = e||window.event;
alert("body");
}
document.getElementsByTagName("div")[0].onclick = function(e) {
e = e||window.event;
alert("div0");
if (!!e.cancelBubble) {
e.cancelBubble = true;
} else if (!!e.stopPropagation) {
e.stopPropagation();
}
}
}