gpt4 book ai didi

javascript - Vue.js - 滚动到不起作用的元素

转载 作者:行者123 更新时间:2023-11-28 17:41:48 25 4
gpt4 key购买 nike

我有以下 v-for,当我添加新评论时,我想滚动到该评论,但在控制台中收到以下错误:

Cannot read property 'top' of undefined

这是在我的添加方法中导致错误的行:

$('html, body').animate({scrollTop: $("#comment-" + response.data.id).offset().top}, 2000);

我检查了控制台,response.data.id 不为空,所以它一定与jquery 无法识别添加的元素。有什么想法吗?

<ul class="list-inline">
<li v-for="(comment, index) in comments"
:key="comment.id"
:id="'comment-' + comment.id">
<span v-html="comment.comment"></span>
</li>
</ul>

var vm = new Vue({
el: '#root',
data: {
comments: [
{
"id": 2,
"comment": "blah...",
},
{
"id": 4,
"comment": "blah...",
}
{
"id": 6,
"comment": "blah...",
}
]
},
methods: {
add: function (comment) {
axios.post("api/comments/add, { comment: comment })
.then((response) => {
this.comments.push(response.data);
$('html, body').animate({scrollTop: $("#comment-" + response.data.id).offset().top}, 2000);

})
.catch((error) => {});
}

}
});

最佳答案

您可能需要等到其在页面上呈现后再尝试使用 jQuery 操作该对象。

// next line adds it into the shadow dom
this.comments.push(response.data)
// next tick is called after rendering
this.$nextTick(() => {
$('html, body').animate({scrollTop: $("#comment-" + response.data.id).offset().top}, 2000)
})

另请查看https://v2.vuejs.org/v2/api/#Vue-nextTick

关于javascript - Vue.js - 滚动到不起作用的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47756566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com