学无先后,达者为师

网站首页 前端文档 正文

JavaScript 阻止冒泡和捕获

作者:前端搬运工 更新时间: 2022-01-18 前端文档
  • 防止冒泡和捕获: W3C的方法是e.stopPropagation(), IE的方法是:e.cancelBubble = true。
  • 取消默认事件:W3C的方法是e.preventDefault(),IE的方法是e.returnValue = false。
    JavaScript的return false:只会阻止默认行为,不会停止冒泡。
    var a = document.getElementById("testB");
    a.onclick = function(){
     	return false;
    };
    
  • JQuery中return false:既停止冒泡又阻止默认行为。
    $("#testC").on('click',function(){
    	return false;
    })

总结使用方法

  • 1.当需要停止冒泡行为时,可以使用:
    function stopBubble(e) { 
    //如果提供了事件对象,则这是一个非IE浏览器 
    if ( e && e.stopPropagation ) 
        //因此它支持W3C的stopPropagation()方法 
        e.stopPropagation(); 
    else 
        //否则,我们需要使用IE的方式来取消事件冒泡 
        window.event.cancelBubble = true; 
    }
```
// 或者可以更加简洁
function stopBubble() {
	window.event? window.event.cancelBubble = true : e.stopPropagation();
}
```
  • 2.当需要阻止默认行为时:
    function stopDefault(e) {
    //阻止默认浏览器行为(w3c)
        if(e && e.preventDefault) {
            e.preventDefault();
        }else {
            window.event.returnValue = false; //IE中阻止浏览器默认动作的方式
        } 
        return false;
    }
    

原文链接:https://blog.csdn.net/weixin_42989576/article/details/89388275

栏目分类
最近更新