vue中v-for循数组arr,div中显示对象中的某个值,比如item.name,此div为横向排列的,点击item.name时获取此元素距离页面左侧的距离,使用以上方法this.$refs[item.id][0]获取的始终是第一个对象所对应的item.nam与左侧的距离,其他元素的距离该如何计算
时间: 2024-02-24 13:56:22 浏览: 58
如果您想获取每个元素距离页面左侧的距离,您可以考虑将 `this.$refs[item.id]` 改为 `this.$refs`,以获取所有元素的引用,然后使用 `forEach` 方法遍历所有元素,并获取每个元素的距离。示例代码如下:
```html
<template>
<div>
<div v-for="item in arr" :key="item.id" :ref="item.id" @click="handleClick(item.id)">{{ item.name }}</div>
</div>
</template>
<script>
export default {
data() {
return {
arr: [
{ id: 1, name: 'A' },
{ id: 2, name: 'B' },
{ id: 3, name: 'C' }
]
};
},
methods: {
handleClick(refName) {
this.$nextTick(() => {
this.$refs[refName].forEach(element => {
let distance = element.offsetLeft;
console.log(refName, distance);
});
});
}
}
};
</script>
```
在这个示例中,我们将 `this.$refs[item.id]` 改为 `this.$refs`,并在 `handleClick` 方法中使用 `forEach` 方法遍历所有元素,并获取每个元素的距离。我们还使用 `this.$nextTick` 来确保在更新 DOM 后获取元素的距离。
希望这个回答能够帮助您解决问题。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)