美文网首页
js阻止事件冒泡、捕获和默认事件行为

js阻止事件冒泡、捕获和默认事件行为

作者: 不退则进_笑 | 来源:发表于2020-12-08 15:36 被阅读0次

1,防止冒泡和捕获

  • w3c 的方法是 e.stopPropagation()
  • IE 是使用 e.cancelBubble = true
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
    <div id='box1' onClick=alert('box1点击事件')>
        <h2>box1盒子</h2>
        <div id='box2'>
            <h3>
                box2盒子
            </h3>
        </div>
    </div>
</head>
<body>

<script>
    var box2 = document.getElementById('box2')
    box2.onclick = function(e) {
        alert('box2点击事件');
        var event = e||window.event;
        event.cancelBubble ? event.cancelBubble = true : event.stopPropagation();
    }

</script>

</body>
</html>

2,默认事件

1,什么是默认事件:

  • a 标签 href 属性上的跳转
  • 鼠标右键呼出菜单
  • form 表单里 button 标签和 type 属性为 submit 的 input 标签的提交

2,取消默认事件

  • w3c 的取消默认事件方法是 e.preventDefault()
  • IE9 以下是使用 e.returnValue = false
1)a 标签默认时间的取消

document.getElementById('aaa').onclick =
function(e){
  var event = e || window.event
  if(e.preventDefault){
    e.preventDefault()
  } else {
    event.returnValue = false
  }
}
2) 右键呼出菜单默认事件的取消

document.oncontextmenu = function(e){
    var event = e || window.event;
    if(e.preventDefault){
        e.preventDefault();
    }else{
        event.returnValue = false;
    }
}
3)表单的默认事件——提交事件的取消

document.getElementsByClassName(“user-info”)[0].onsubmit = function(e){
var event = e || window.event;
  if(event.preventDefault){
    event.preventDefault();
  }else{
    event.returnValue = false;
  }
}

3,return false

  • return false 只能阻止默认行为,不阻止默认冒泡。但是 jquery 的 return false 既能阻止默认行为,也能阻止冒泡
1)原生 JS,只阻止默认行为,不阻止冒泡

<div onclick=alert('222')>
    box1
    <div onclick=alert('111')>
        box2
        <a id="aaa" href="https://www.baidu.com/">百度</a>
    </div>
</div>

<script>
    document.getElementById('aaa').onclick = function(){
        return false
    }
</script>
2)jQ,既阻止默认行为,也阻止冒泡

<div onclick=alert('222')>
    box1
    <div onclick=alert('111')>
        box2
        <a id="aaa" href="https://www.baidu.com/">百度</a>
    </div>
</div>

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
    $("#aaa").on('click',function(){
    return false;
});
</script>

在使用 return false 过程中发现,如果使用

// return false起了阻止默认事件行为

<script>
    document.getElementById('aaa').onclick = function(){
        return false
    }
</script>

// return false没有起作用

document.getElementById('aaa').addEventListener('click', function () {
    return false
})

相关文章

  • v-on的事件修饰符

    .stop:阻止事件冒泡(对后代元素) .prevent:阻止事件默认行为 .capture:使用事件捕获机制 ....

  • js 阻止冒泡 阻止默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • 默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法,首先要了解一下 JS 事件和 JS 阻止事件冒泡,捕获方法 1. js ...

  • js阻止事件冒泡、捕获和默认事件行为

    1,防止冒泡和捕获 w3c 的方法是 e.stopPropagation() IE 是使用 e.cancelBub...

  • vue

    vue的事件修饰符:.stop:阻止冒泡.prevent:阻止默认行为.capture 捕获.self ...

  • Vue事件修饰符

    1· .stop 阻止冒泡 2· .prevent 阻止默认行为 3· .capture 实现捕获触发事件机...

  • java script 知识点

    事件事件流冒泡捕获阻止冒泡e.stopPropagation()阻止默认事件e.preventDefault()常...

  • vue修饰符

    事件修饰符: .stop 阻止事件冒泡 .prevent 阻止默认事件 .capture 事件捕获 .self 将...

  • js事件冒泡和捕获,阻止冒泡和默认行为

    兼容性都是IE8及以下 事件冒泡: 事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触...

网友评论

      本文标题:js阻止事件冒泡、捕获和默认事件行为

      本文链接:https://www.haomeiwen.com/subject/ejefgktx.html