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 相关文章推荐
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 Javascript
javascript跨域原因以及解决方案分享
Apr 08 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
分享javascript、jquery实用代码段
Oct 20 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
详解vue-cli 构建Vue项目遇到的坑
Aug 30 Javascript
JQuery事件冒泡和默认行为代码实例
May 13 jQuery
解决vue页面刷新,数据丢失的问题
Nov 24 Vue.js
javascript全局自定义鼠标右键菜单
Dec 08 Javascript
JavaScript实现原型封装轮播图
Dec 27 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
python fabric实现远程操作和部署示例
2014/03/25 Python
python查看zip包中文件及大小的方法
2015/07/09 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
公司同意接收函
2014/01/13 职场文书
大学生职业生涯规划范文
2014/01/22 职场文书
大学新生军训自我鉴定
2014/03/18 职场文书
公司委托书格式
2014/08/01 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
创业计划书之养殖业
2019/10/11 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript