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控件的相对独立性
Sep 06 Javascript
浅谈EasyUI中Treegrid节点的删除
Mar 01 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
老生常谈JavaScript面向对象基础与this指向问题
Oct 16 Javascript
详解JavaScript 中 if / if...else...替换方式
Jul 15 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 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页面缓存ob系列函数介绍
2012/10/18 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
用js实现的页面关键字密度查询代码
2007/12/27 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python快速查找算法应用实例
2014/09/26 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
vue+django实现下载文件的示例
2021/03/24 Vue.js
中学教师实习自我鉴定
2013/09/28 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
让世界充满爱观后感
2015/06/10 职场文书
世界文化遗产导游词
2019/08/07 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
TensorFlow的自动求导原理分析
2021/05/26 Python
Django rest framework如何自定义用户表
2021/06/09 Python
javascript canvas实现雨滴效果
2021/06/09 Javascript
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技