JS如何阻止事件冒泡

2025-04-28 17:27:52
推荐回答(5个)
回答1:

  如果

是在

里面,那么呢,

有一个onclick事件,

也有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;
  }

回答2:

要想达到你个效果,只需要在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";
        }
    }
}

回答3:

javascript禁止冒泡可以使用事件的 .stopPropagation()方法,该方法可以完全阻止事件冒泡。

回答4:


123123






我的能力所做出的阻止冒泡的js,期待更高明的版本

回答5:

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();
    }
}
 
}