vue 获取元素额外生成的data-v-xxx操作


Posted in Javascript onSeptember 09, 2020

vue 获取元素额外生成的data-v-xxx操作

需求描述:由于样式中使用了scoped,所以编译后标签对中生成data-v-xxx属性。在【.dialog_content】的div中 动态添加元素节点p和span时,也需要给元素节点添加data-v-xxx属性。由于data-v-xxx属性是会变化的,那如何获取它,添加在动态添加的元素节点中呢?本博客将给出解决方案。

【解决方法】

获取属性名【document.getElementById("dialog_submit").attributes[0].name】

设置属性【nodeP.setAttribute(dataV, "")】

var nodeP = document.createElement("p"),
nodeSpan = document.createElement("span");
// 获取data-v-xxxx的值
var dataV = document.getElementById("dialog_submit").attributes[0].name;
// 设置属性
nodeP.setAttribute(dataV, "");
nodeSpan.setAttribute(dataV, "");

【补充知识】

当 <style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。编译时将生成data-v-xxx属性,如下的“data-v-2bc3d899”就是因为加了scoped.

<style scoped>
.title {
 color:blue;
}
</style>
 
<template>
 <div class="title">hello</div>
</template>

上述代码被编译为:

<style>
.title[data-v-f3f3eg9] {
 color: blue;
}
</style>
 
<template>
 <div class="title" data-v-f3f3eg9>hello</div>
</template>

使用 scoped 后,父组件的样式将不会渗透到子组件中。不过一个子组件的根节点会同时受其父组件的 scoped CSS 和子组件的 scoped CSS 的影响。这样设计是为了让父组件可以从布局的角度出发,调整其子组件根元素的样式。

深度作用选择器:

如果希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,可以使用 >>> 操作符:

<style scoped>
.a >>> .b { /* ... */ }
</style>

上述代码被编译为:

.a[data-v-f3f3eg9] .b { /* ... */ }

参考:https://vue-loader.vuejs.org/zh/guide/scoped-css.html

补充知识:vue 自定义属性 data-v,closest 获取事件源外层元素

在遇到使用e.target 的时候,通常会传一个参数,比较简单,在此记录一下

使用:data-XXX 来绑定

<div class="custom-tree-node"
        slot-scope="{ node, data }"
        :data-id="data.id"
</div>

获取 :

利用closeet 获取到当前目标元素最近的外层元素含有 custom-tree-node 类名的dom

然后再利用 dataset.id 拿到传的值

async handleTouchEnd (event) {
   let customNode = event.target.closest('.custom-tree-node')
   if (customNode) {
    let data = {}
    data.id = customNode.dataset.id
    }
}

以上这篇vue 获取元素额外生成的data-v-xxx操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中利用数组实现的循环队列代码
Jan 24 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
node.js入门教程之querystring模块的使用方法
Feb 27 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
Sep 07 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
Vue CLI3中使用compass normalize的方法
May 30 Javascript
js Math数学简单使用操作示例
Mar 13 Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 Javascript
vue 页面回退mounted函数不执行的解决方案
Jul 26 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 Javascript
vue移动端写的拖拽功能示例代码
Sep 09 #Javascript
vue路由的配置和页面切换详解
Sep 09 #Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 #Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 #Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 #Javascript
vue实现几秒后跳转新页面代码
Sep 09 #Javascript
JS异步宏队列微队列原理详解
Sep 09 #Javascript
You might like
php a simple smtp class
2007/11/26 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
详解json在php中的应用
2018/09/30 PHP
arguments对象
2006/11/20 Javascript
JavaScript this 深入理解
2009/07/30 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jQuery+HTML5实现图片上传前预览效果
2015/08/20 Javascript
jQuery+Ajax实现无刷新操作
2016/01/04 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
vue移动端使用canvas签名的实现
2020/01/15 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
广州迈达威.net面试题目
2012/03/10 面试题
会计自荐书
2013/12/02 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang