原生JS阻止冒泡

 function stopProp(e){
    // 获得event 对象 并处理兼容
    var ev = e || window.event;


    if( ev.stopPropagation ){
        ev.stopPropagation(); // 普通浏览器阻止冒泡
    }else{
        ev.cancelBubble = true;  // IE 阻止冒泡
    }

    // 阻止系统默认的行为
    ev.preventDefault();
    // return false; 也能达到阻止默认行为的目的,但是可能会有兼容性问题
    return false;
}

事件处理
ev.clientX  ev.clientY  获得鼠标在屏幕上的横纵坐标
ele.addEventListener('click',doSomething,true)  // True为捕获,false为冒泡。

ele.attachEvent("onclick", doSomething);  // IE浏览器的处理方法

// ev.target 等于事件发生的对象

// this 和 ev.currentTarget 相同,代表哪个对象在处理点击事件
ev.eventPhase 代表事件处于哪个阶段
            // 1.捕获阶段
            // 2.点击元素的处理阶段
            // 3.冒泡阶段

### 如何在 JavaScript 和 Vue 中阻止事件冒泡 #### JavaScript 阻止事件冒泡方法 JavaScript 提供了 `event.stopPropagation()` 方法用于阻止事件冒泡。当某个事件触发时,默认情况下会沿着 DOM 树向上传播至父级节点,这种现象称为事件冒泡。通过调用该方法可以中断这一过程。 以下是使用原生 JavaScript 的示例代码: ```javascript document.querySelector('button').addEventListener('click', function(event) { event.stopPropagation(); console.log('按钮被点击'); }); document.querySelector('div').addEventListener('click', function() { console.log('容器被点击'); }); ``` 上述代码展示了如何利用 `stopPropagation` 来防止点击事件从子元素传播到其父元素[^1]。 #### Vue 阻止事件冒泡方法 Vue.js 提供了一种简洁的方式来处理此类需求——即 **事件修饰符** `.stop`。它可以直接附加于绑定的事件上以实现相同效果而无需显式编写额外逻辑。 下面是一个基于 Vue 实现的例子: ```html <template> <div @click="handleParentClick"> <!-- 使用 .stop 修饰符 --> <button @click.stop="handleChildClick">点击我</button> </div> </template> <script> export default { methods: { handleParentClick() { console.log('父元素被点击'); }, handleChildClick() { console.log('子元素被点击, 不会触发父元素'); } } }; </script> ``` 在这个例子中,`.stop` 被应用到了 `<button>` 上面的 click 事件里,从而实现了阻止事件继续向上层传递的功能][^[^23]。 #### 总结 无论是采用传统的 JavaScript 还是现代框架如 Vue,在开发过程中都可能遇到需要控制特定交互行为的情况;掌握好这些基础概念和技术手段对于构建高效用户体验至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值