jquery滚动到通过ajax动态创建的元素

时间:2012-03-04 19:45:06

标签: javascript jquery

我目前正在使用此答案中提供的解决方案jQuery scroll to element但是,我遇到的问题是我想要滚动到的元素已经通过ajax插入到dom中,因此该函数实际上不起作用。我假设jquery不知道元素是否存在,因为页面实际上没有重新加载。

我过去曾经使用像jquery .delegate这样的东西来实现click / onchange事件但是,我不确定是否/如何使用类似的东西,以便jquery可以找到新创建的元素。

关于我如何做到这一点的任何想法?我目前正在使用的代码用于滚动:

$('html,body')。animate({scrollTop:$(“#comment_row _”+ comment_id).offset()。top},2000);

2 个答案:

答案 0 :(得分:1)

当ajax完成并添加新元素时,你应该调用你的滚动函数,例如成功回调。

答案 1 :(得分:1)

根据定义,AJAX是异步的(在'AJAX'中首先是'A')所以ajax调用之后的代码将在ajax完成之前触发

$('#content').load( 'url.php');
/* ajax hasn't completed when this fires-FAIL*/
$('html, body').animate({ scrollTop: $("#comment_row_"+comment_id).offset().top }, 2000);


$('#content').load( 'url.php', function(){
    /* ajax has completed when this fires-PASS*/                                    
    $('html, body').animate({ scrollTop: $("#comment_row_"+comment_id).offset().top }, 2000);                                       
});