好的,我有以下代码:
function() {
$("ul#postbit").load('load.php').fadeIn("slow");
}, 3000);
我想要实现的是加载 load.php 之后将结果添加到 <li>
中并让它淡入。目前它会覆盖 ul#postbit
中的内容。我只希望它加载新结果并保留其中的内容。我希望这是有道理的。
最佳答案
.load()
方法旨在以这种方式工作,即将 Ajax 响应直接加载到您调用它的元素中。尝试使用其他之一 Ajax methods ,例如:
$.get("load.php", function(data) {
$(data).prependTo("#postbit").fadeIn("slow");
});
这假设您的“load.php”返回包含 li 元素的 html,这就是您在说当前代码每次都会覆盖现有列表时所描述的内容。如果您的“load.php”仅返回新 li 的内容,而没有 <li>
标签,然后您可以创建 li 并将其添加到前面:
$.get("load.php", function(data) {
$("<li/>").html(data).prependTo("#postbit").fadeIn("slow");
});
编辑:要让它不断重新加载,您可以将上面的内容包装到一个用 setInterval()
调用的函数中。 ,或者做这样的事情:
function getMoreData() {
$.get("load.php", function(data) {
$(data).prependTo("#postbit").fadeIn("slow");
}).complete(function() {
setTimeout(getMoreData, 3000);
});
}
getMoreData();
这使用setTimeout()
安排另一次运行 getMoreData()
3 秒后,但它是在前一个请求完成后执行的。
关于JQuery load() 和 .prepend(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11433581/