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 相关文章推荐
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
jQuery使用元素属性attr赋值详解
Feb 27 Javascript
jquery实现Ctrl+Enter提交表单的方法
Jul 21 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
javascript基础知识讲解
Jan 11 Javascript
Javascript的this用法
Jan 16 Javascript
详解vue-cli开发环境跨域问题解决方案
Jun 06 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
详解node.js 下载图片的 2 种方式
Mar 02 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
vue的token刷新处理的方法
Jul 17 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
Oct 30 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 常用函数库和一些实用小技巧
2009/01/01 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
Python常用列表数据结构小结
2014/08/06 Python
python optparse模块使用实例
2015/04/09 Python
Python线性方程组求解运算示例
2018/01/17 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
浅析Python四种数据类型
2018/09/26 Python
超简单使用Python换脸实例
2019/03/27 Python
python读写csv文件实例代码
2019/07/05 Python
python验证码图片处理(二值化)
2019/11/01 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
C语言开发工程师测试题
2016/12/20 面试题
高中毕业自我鉴定
2013/12/22 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
运动会开幕词
2015/01/28 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis