私は現在、最新のチャットを一番上に表示し(ユーザーが投稿リクエストを介してデータを送信すると更新されます)、最も古いチャットを下に押して削除するjqueryを使用してインスタントチャットボックスをコーディングしています。
問題は、複数の最新のチャットが取得された場合 (たとえば、2)、2 つの新しい div が先頭に追加されますが、2 つではなく 1 つの古い div のみが削除されることです...タイムアウトを試みましたが、どちらも機能しませんでした..
以下は、問題が発生したと思われるコードスニペットです。
function showData(currentchatstyle, data, final){
var newchatstyle;
if (currentchatstyle == "chatone") {
newchatstyle = "chattwo";
}
else {
newchatstyle = "chatone";
}
$('div[class^="chat"]:first').before('<div class="' + newchatstyle + '" style="display:none;">' + data + ' </div>');
$('div[class^="chat"]:first').slideDown(500,"swing", function(){
$('div[class^="chat"]').last().fadeOut(500, function() {
$(this).remove();
});
});
return newchatstyle;
}
$('input[name="content"]').keyup(function(key) {
if (key.which==13) {
var author = $('input[name="author"]').val();
var content = $('input[name="content"]').val();
var lastnum = $('postn:first').text();
var chatstyle = $('div[class^="chat"]:first').attr("class");
$.post(
"chatajax.php",
{ "author": author, "content": content, "lastnum": lastnum },
function(data) {
var msg = data.split("|~|");
for (var i = 0; i < msg.length; i++) {
chatstyle = showData(chatstyle, msg[i], true);
}
}
);
}
});
助けていただければ幸いです。