鼠标点击一次会动态生成dom插入el-ag,但是获取的父span却是不准确,感觉总是上一次的width,除非点击两次才能获取到,我想获取的就是el-select多选框生成的tag选项的宽
<div class="el-select__tags">
<span>
<span class=“el-tag”>生成的dom1</span>
<span class=“el-tag”>生成的dom2</span>
</span>
</div>
computed: {
valueData () {
this.$nextTick(() =>{
// 在这里面去获取DOM
this.tagWidth = document.querySelector('.el-select__tags span').clientWidth
console.log(this.tagWidth )
})
}
}
在 Vue.js 中,如果你尝试获取动态创建的 DOM 节点的宽度,但点击两次才能获取到,可能是因为以下原因:
this.$el
可能是动态创建的节点的一个实例,而不是 DOM 元素本身。这意味着当你点击第一次时,Vue.js 创建了一个新的实例,并且在这个实例上计算了宽度。但是,当你再次点击时,Vue.js 仍然在原来的实例上进行计算,这可能会导致你再次点击才能获取到真实宽度。
当 this.$el
是动态创建的节点的一个实例时,你可能需要使用 v-on
或 v-on:click
来监听事件,以便在节点被点击时触发计算。这可能需要更复杂的代码,因为它涉及到处理多种事件类型。
如果你希望在节点被点击时立即获取到宽度,你可以使用以下方法:
javascript
this.$el.addEventListener('click', (event) => {
const width = this.$el.offsetWidth;
console.log('Width:', width);
});
这将立即触发一个事件监听器,每当节点被点击时,它将计算并打印节点的宽度。