JQuery load()和.prepend()

时间:2012-07-11 13:19:08

标签: jquery

好的,我有以下代码:

function() { 
$("ul#postbit").load('load.php').fadeIn("slow");
}, 3000);

我想要实现的是在加载load.php之后将结果添加到<li>并让它淡入。目前它会覆盖ul#postbit中的内容。我只希望它能够加载新的结果并保留其中的内容。我希望这是有道理的。

2 个答案:

答案 0 :(得分:9)

.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()在3秒后安排另一次getMoreData()运行,但在上一个请求完成后执行此操作。

答案 1 :(得分:0)

您应该查看jQuery API。以下是AJAX的API:http://api.jquery.com/category/ajax/

$.ajax({
    url: 'load.php',
    success: function(data) {
        $("ul#postbit").prepend('<li>'+ data +'</li>');
    }
});