2

それで、私は何か疑問に思っていました。私が作っている IM/chat の Web サイトでは、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) に保存してから、新しいものをロードしようとしました。次に、2 つを比較し、新しいコメントを使用してフェード インします。私は要点を逃していますか?

ああ、明らかな解決策を見逃したからといって、反対票を投じないでください。よく説明しないと使えないと思っていたのですが、そうしました。

4

2 に答える 2

1

successハンドラーでこれを行うことができます:

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

もちろん、必要に応じて<span>代わりにa を使用することもできます。<div>

于 2012-06-27T20:30:26.300 に答える
0

ブラスターに似ている...

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