vue使用v-html渲染的标签,如何绑定事件?

有的时候,想要根据返回数据用v-html渲染标签,还需要给该标签绑定事件。但是渲染后的html里面写绑定事件的代码没有经过vue编译,所以事件无效。

错误示范如下:

//html
<div>
   下面是使用v-html进行渲染
   <div v-html="htmlStr" />
</div>

// 数据
data(){
	return{
		htmlStr: "<p class='p-render' @click='clickHandle'>我是被v-html进行渲染的</p>"
	}
}


// 方法
clickHandle() {
  console.log("点击了渲染的html标签");
}

在这里插入图片描述
点击v-html渲染出来的标签,绑定的方法没有丝毫的反应。确切的说,方法并没有绑定上。那么,该如何解决这个问题呢?

正确示范如下:

//html
<div>
   下面是使用v-html进行渲染
   <div v-html="htmlStr" @click="clickHandle"/>
</div>

// 数据
data(){
	return{
		htmlStr: "<p class='p-render'>我是被v-html进行渲染的</p>"
	}
}

// 方法
clickHandle(e) {
  if (e.target.nodeName == "P") {
    console.log("点击了渲染的html标签");
  }
}

在v-html同级元素中使用事件绑定,然后根据事件触发的目标对象去判断和获取参数

因为我们渲染的是P标签,因为可以判断,当点击的为P标签时,可执行后续操作

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值