vue中div@click不起作用

vue中div@click不起作用

前提,一个外层div,样式:position: relative;,设置了点击事件@click
里面用了position: absolute;绝对定位,之后点击就不起作用

目前已知两种解决方法
1、最外层div的z-index层级设置比里面绝对定位的大
2、用@click.prevent也是可以的

v-on的指令修饰符
.stop - 调用 event.stopPropagation().prevent - 调用 event.preventDefault().capture - 添加事件侦听器时使用 capture 模式。
.self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
.native - 监听组件根元素的原生事件。
.once - 只触发一次回调。

@clicl.stop函数会阻止事件向上冒泡
@click.prevent函数会阻止触发dom的原始事件,而去执行特定的事件

Vue,@click.stop的作用是阻止点击事件的冒泡传播。当我们在一个嵌套的元素结构绑定了多个点击事件时,点击其一个元素,该元素上的点击事件会先被触发,然后事件会沿着DOM树向上冒泡传递,最终被父级元素捕获。但是,有时我们希望点击某个元素时,只触发该元素上的点击事件,不再继续向上级元素传递,这时就可以使用@click.stop修饰符。 例如,下面的代码,当我们点击按钮时,会先触发按钮的点击事件,然后该事件会向上冒泡,最终被包含该按钮的div元素捕获: ```html <template> <div @click="handleDivClick"> <button @click="handleBtnClick">Click me</button> </div> </template> <script> export default { methods: { handleDivClick() { console.log('div clicked'); }, handleBtnClick() { console.log('button clicked'); } } } </script> ``` 如果我们希望点击按钮时,只触发按钮的点击事件,不再触发div元素的点击事件,可以在按钮的@click事件绑定加入.stop修饰符: ```html <template> <div @click="handleDivClick"> <button @click.stop="handleBtnClick">Click me</button> </div> </template> <script> export default { methods: { handleDivClick() { console.log('div clicked'); }, handleBtnClick() { console.log('button clicked'); } } } </script> ``` 这样点击按钮时,事件就不会继续向上级元素传递,不再触发div元素的点击事件,只会触发按钮的点击事件。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值