大家好我有以下代码
$.ajax({
url: "http://localhost/twee/chat/getnumcom",
type: 'POST',
data: form_data,
success: function(html) {
var data = parseInt(html);
page = 20 * data ;
while ( counter < page ) {
$.get("http://localhost/twee/chat/"+id+"/"+counter,function(data){
$('#c').append($(data).find('#c').html());
});
counter = counter + 20 ;
}
}
});
alert($('#600').length);
$.scrollTo('#600');
这就是它的作用。最初它将数据附加到我的窗口,直到找到#600。从技术上讲,我有一个数学计算600应该在哪里的函数。这很好,div很好地加载。
我是如何添加警报专门检查div是否已加载。值0表示否,值1表示是。在我的firebug控制台中,当函数被触发时,while循环仍然在执行,但警报已经显示值0.因此,滚动没有完成。
如果我在执行后立即再次启动该功能,我得到1表示已加载div。
有没有办法延迟滚动功能,直到执行while循环?我一直认为代码将在程序上执行,并且在加载所有数据后将显示警报。
我想计时器可能是一个选项,但我不想使用它。我不确定我应该将计时器设置为多少毫秒。
答案 0 :(得分:1)
Ajax调用是异步的,在scrollTo
循环之后将alert
/ success
置于while
回调函数中:
$.ajax({
url: "http://localhost/twee/chat/getnumcom",
type: 'POST',
data: form_data,
success: function (html) {
var data = parseInt(html);
page = 20 * data;
while (counter < page) {
$.get("http://localhost/twee/chat/" + id + "/" + counter, function (data) {
$('#c').append($(data).find('#c').html());
if ($('#600').length) //if there's a #600 element inside this $.get callback
$.scrollTo('#600'); //scrolls to it
});
counter = counter + 20;
}
}
});
请注意,数字ID仅在HTML5中有效,如果需要关注的话。