vue外层div上有点击事件,内层div也有点击事件,想要实现点 内层div,不触发外层点击事件(综合一下记录)

12 篇文章 0 订阅

vue有个属性是@click.stop="test()"
因为我写app,⽤(mui框架中app的点击事件),本来还以为不能⽤,后来试了下,好⽤的
想了想也对,毕竟是mui只是个UI框架,实际还是vue的东西

<view class="tab-bar-line" v-for="(item, index) in list" :key="item.id">
    <view class="content" @click="goDetail(item.id)">
        <image :src="item.img" style="width: 150rpx; height: 150rpx; border-radius: 75rpx;"></image>
        <view class="desc">
            <view class="" @click.stop="buyGoods(item.id)">
                <text class="fr cu-tag bg-gradual-orange margin-bottom-xs text-xs">⽀付</text>
                <view class="clear"></view>
            </view>
        </view>
    </view>
</view>

补充:

vue—click点击事件的冒泡行为
**1. click.stop就是外层包内层,内层写了.stop不会触发到外层的,只触发内层

.prevent就是阻止默认跳转链接,比如写了一个百度链接,没有
prevent会默认跳转到百度网页,写了这个prevent就会阻止自动跳转行为
.capture就是外层包内层,外层写了capture行为,只会触发外层,而内层是先触发外层,再触发内层
.self就是外层包内层,内层包按钮事件,内层写了.self行为,外层只会触发外层,内层先触发内层,再外层,点击按钮事件,先触发按钮事件,再触发外层,不会触发内层
、click.prevent.once就是,第一次点击触发hrfe,不会跳转链接,第二次点击就会跳转链接**

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue2 中,使用 v-html 指令动态渲染 HTML 代码时,如果 HTML 代码中包含有点击事件绑定,会出现点击事件不生效的问题。这是因为 v-html 渲染的 HTML 代码会被当做静态内容插入到 DOM 树中,而不会像 Vue 模板中的标签一样被 Vue 进行编译和渲染。 为了解决这个问题,可以使用 Vue2 的事件委托机制,将点击事件委托给父级元素或者根元素。 具体实现方法如下: 1. 在 div 标签上添加 @click.prevent="handleClick" 事件,用于捕获点击事件。 2. 在 handleClick 方法中,判断点击事件的 target 是否为包含有点击事件绑定的元素,如果是,则执行点击事件对应的方法。 3. 在包含有点击事件绑定的元素上添加一个自定义属性,用于标识该元素需要绑定点击事件。 4. 在 div 标签上使用 v-html 指令渲染 HTML 代码时,将包含有点击事件绑定的元素的自定义属性一同渲染出来。 示例代码如下: HTML 代码: ```html <div @click.prevent="handleClick" v-html="html"></div> ``` Vue 实例: ```javascript new Vue({ el: "#app", data: { html: `<p><a custom-click href="javascript:void(0)">击我</a></p>` }, methods: { handleClick(e) { const target = e.target; if (target.hasAttribute('custom-click')) { // 执行点击事件对应的方法 console.log('点击事件生效了'); } } }, mounted() { // 在 v-html 渲染的 HTML 代码中添加自定义属性 const a = document.querySelector('a[custom-click]'); if (a) { a.setAttribute('custom-click', 'true'); } } }); ``` 通过以上方法,就可以实现div 中使用 v-html 渲染的 HTML 代码中绑定点击事件,同时点击事件也能够正常生效了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值