滚动到应该通过Ajax加载的元素ID(无限滚动)

时间:2017-07-10 13:23:41

标签: javascript jquery dom scroll

所以,我有两个页面,notificationstopicTopic页面有评论,每条评论都有唯一的ID。当用户按下notifications页面中的评论链接时,会将他带到滚动到按下的确切评论用户的topic页面。之后的链接看起来像topic/titleoftopic#comment_627。它工作得很好,但现在,当我添加无限滚动并开始只显示前几条注释(其余部分被加载到滚动到底部)时,它不会滚动到注释,我收到错误控制台Uncaught TypeError: Cannot read property 'top' of undefined,显然这是因为评论尚未加载。有没有办法使它工作?我有一个想法 - 开始滚动到底部,直到找到确切的评论,但不知道如何实现这一点。这是我如何滚动的代码:

//Scroll to the comment from notifications
$(document).ready(function() {
$('html, body').hide();

if (window.location.hash) {

    $('html, body').scrollTop(0).show();
    $('html, body').animate({
        scrollTop: $(window.location.hash).offset().top
    }, 800);

} else {
    $('html, body').show();
}
});

感谢大家的任何建议或建议!

1 个答案:

答案 0 :(得分:0)

对于动态添加的项目,您必须从整个文档中找到该ID。

$(document).ready(function () {
            $('html, body').hide();
            if (window.location.hash) {
                $('html, body').scrollTop(0).show();
                $('html, body').animate({
                    scrollTop: $(document).find(window.location.hash).offset().top
                }, 800);
            } else {
                $('html, body').show();
            }
        });