如何刷新DIV并立即滚动到底部



我是jQuery的新手,我尝试过这两个功能:

function RefreshDiv() {
$('#box').load('messages.php #box');
}
var scrolled = false;
function Scroll() {
if(!scrolled){
var log = document.querySelector('#box');
log.scrollTop = log.scrollHeight - log.clientHeight;
}
}
$('#box').on('scroll', function(){
scrolled=true;
});

到目前为止,我已经尝试了多种方法来阐明这一点,比如执行setInterval函数,这是.load((和.on((函数中的一个完整事件,但两者似乎都不能协同工作,但它们确实是单独工作的。

我很想知道如何每五秒钟使用一次RefreshDiv((函数,然后每秒钟执行一次Scroll((,因为我想重新加载一个框,然后立即向下滚动,类似于这样的东西?:

setInterval(Scroll, 1000);
setInterval(RefreshDiv, 5000);

显然,这不起作用,但我不知道如何构建它,因为.load((似乎总是抵消我代码的其余部分。

JQueryload是异步的,它将把数据从url加载到JQuery元素中,一旦完成,它将执行作为第二个参数传递的函数。

jQuery文档在这里有一个关于方法的好页面

举个例子,试试这个片段。

const url = 'https://jsonplaceholder.typicode.com/todos/1';
$(document).ready(() => {
$('#my-button').click(() => {
console.log('clicked');
$('#results').load(url, () => {
console.log('Everything loaded, can do something else');
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="results"></div>
<button id="my-button">Get stuff</button>

请记住,在加载json时,理想情况下它会请求html或文本。

根据jQuery.load((文档,您需要将滚动代码放入完整的函数中,以便在load函数收集和处理数据后执行。

考虑到这一点,您的负载调用看起来像:

$('#box').load('messages.php #box',function () { [code to perform the scroll]] });

最新更新