2

所以我想知道一些事情。在我正在制作的 IM/聊天网站中,我让它每隔 10 秒左右检查一次数据库,看看是否有新数据进入。而且,当用户发布新评论时,它会自动将其发送到数据库并将其添加到评论列表而不重新加载。但它每次都会加载所有评论。

我想知道是否有可能在不对所有旧评论都这样做的情况下为新评论添加效果(例如淡入)。

function update(){
    oldhtml = $('#listposts');
    $.ajax({
            type: "POST",
            data: "",
            url: "update.php",
            success: function(msg){
                $("#listposts").html(msg);
                $('.comment_date').each(function(){
                    $(this).text('[' + prettyDate($(this).text())+']');
                if(oldhtml == )
                });
            }
        });
}
var intervalID = window.setInterval(update, 10000);

这是我的更新代码。这是我的邮政编码:

$("#postbutton").click(function () {
    if(!$('#post').val()==""){
        $.ajax({
            type: "POST",
            data: "data=" + $("#post").val(),
            url: "post.php",
            success: function(msg){
                $("#listposts").html(msg);
                $('.comment_date').each(function(){
                    $(this).text('[' + prettyDate($(this).text())+']');
                });
            }
        });
        $("#post").val("");
    }
});

如您所见,我也在使用 prettyDate。但这与这个问题无关。

因此,正如标题所述,我将尝试将当前 html 保存在一个变量 (oldhtml) 中,然后加载新内容。然后我会比较两者,然后使用新评论淡入。我在那里吗?我错过了重点吗?

哦,请不要仅仅因为我错过了一个明显的解决方案而对我投反对票。如果我解释得不好,我认为你应该使用它,我想我做到了。

4

2 回答 2

1

您可以在success处理程序中执行此操作:

var $dv = $('<div />').css('display', 'none').html(msg);
$("#listposts").append($dv);
$dv.fadeIn();

当然,您可以根据需要使用 a<span>而不是。<div>

于 2012-06-27T20:30:26.300 回答
0

类似于 Blaster 的...

 $('<div />').html(msg).appendTo('#posts').hide().fadeIn();
于 2012-06-27T20:38:02.710 回答