js点击事件穿透

博客围绕JS点击事件穿透展开,虽未给出具体内容,但可知聚焦于该信息技术领域问题,点击事件穿透在前端交互中可能引发异常,需关注解决。
<div class="out" @click="out()">
    <div class="in" @click="in()"></div>
</div>

// 穿透点击(点击in的区域触发out)
.in {
    pointer-events: none;
}

// 阻止穿透 (点击in的区域不会触发out)
function in () {
    event.stopPropagation();
}

 

在 Vue.js 中,事件穿透通常指的是事件冒泡和捕获过程中,事件从一个元素传递到另一个元素,可能会触发不期望的事件处理。下面介绍一些解决事件穿透问题的方法和相关知识。 ### 阻止事件冒泡 事件冒泡是指事件从触发的元素开始,逐级向上传播到父元素。可以使用 `event.stopPropagation()` 方法来阻止事件冒泡。 ```vue <template> <div @click="parentClick"> <button @click="childClick">点击我</button> </div> </template> <script> export default { methods: { childClick(event) { event.stopPropagation(); console.log('子元素点击事件触发'); }, parentClick() { console.log('父元素点击事件触发'); } } } </script> ``` 在上述代码中,当点击按钮时,`childClick` 方法会调用 `event.stopPropagation()`,阻止事件继续冒泡到父元素,因此不会触发父元素的点击事件。 ### 使用修饰符 Vue.js 提供了一些事件修饰符来处理事件穿透问题,如 `.stop` 修饰符可以直接在模板中阻止事件冒泡。 ```vue <template> <div @click="parentClick"> <button @click.stop="childClick">点击我</button> </div> </template> <script> export default { methods: { childClick() { console.log('子元素点击事件触发'); }, parentClick() { console.log('父元素点击事件触发'); } } } </script> ``` 这里的 `@click.stop` 等同于在方法中调用 `event.stopPropagation()`。 ### 捕获阶段处理 事件捕获是事件从文档根节点开始,逐级向下传播到触发事件的元素。可以使用 `.capture` 修饰符来在捕获阶段处理事件。 ```vue <template> <div @click.capture="parentClick"> <button @click="childClick">点击我</button> </div> </template> <script> export default { methods: { childClick() { console.log('子元素点击事件触发'); }, parentClick() { console.log('父元素点击事件在捕获阶段触发'); } } } </script> ``` 在这个例子中,当点击按钮时,父元素的点击事件会在捕获阶段先触发,然后再触发子元素的点击事件。 ### 阻止默认行为 有时候事件穿透可能伴随着默认行为的触发,可以使用 `event.preventDefault()` 方法或 `.prevent` 修饰符来阻止默认行为。 ```vue <template> <a href="#" @click.prevent="handleClick">点击我</a> </template> <script> export default { methods: { handleClick() { console.log('链接点击事件触发'); } } } </script> ``` 这里的 `@click.prevent` 阻止了链接的默认跳转行为。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值