使用 jQuery 在 div 中添加新聊天之前的旧聊天

Append old chats before new chats to the div using jQuery

在我使用 Codeigniter 的在线聊天项目中,jQuery、AJAX 我有一个 每 1 秒运行一次的函数 可以检索聊天状态= 0

$.post("<?php echo base_url(); ?>chat/admin_chat/get_chat",
{ 
  user_id : $('.hide_me').text(),
  username : $('.username').text()                              
},
function(data){
  if (data != "") {
        $('#chat_window').append(data);
        $('#chat_window').scrollTop($('#chat_window').prop("scrollHeight"));
  }
}
);

还有另一个 函数用于获取交付状态 = 1(或旧聊天)的聊天,

$(document).on('click','.user',function (e) {
    e.preventDefault();
    $('.username').html($(this).text());
    $('.hide_me').html($(this).attr('id'));             
    $('.username').show();
    $('.log_username').hide();
    $("#input").removeAttr("readonly");
    var user = $(this).attr('id');
    $("#chat_window").html('');
    $.post("<?php echo base_url(); ?>chat/admin_chat/get_old_chat",
        { 
            user_id : $('.hide_me').text(),
            username : $('.username').text()
        },
        function(data){
            $('#chat_window').append(data);
            $('#chat_window').scrollTop($('#chat_window').prop("scrollHeight"));
        }
    );
});

单击用户名 时调用。 AJAX 调用的结果附加到 div。我现在面临的问题是,有时当我单击用户名时,未传送的 聊天会附加到旧聊天 之前的 div不是我想要的。单击用户名时,我需要在新聊天之前将旧聊天附加到 div。有人可以建议解决问题的方法吗?

我终于找到了解决问题的方法。

  1. 我添加了一个跨度<span id='old_chat_appended' hidden=""></span>
  2. 通过将 span 的值更改为 0 和 1,稍微修改了 get_old_chat 函数。 e.preventDefault()添加

    $('#old_chat_appended').text('0')

    并在使用 $('#chat_window').append(data) 将数据附加到 div 之后, 添加了

    $('#old_chat_appended').text('1').

  3. 最后在每1秒运行一次的get_chat函数中,添加

    if($('#old_chat_appended').text() == 1) { $('#chat_window').append(data); }

应用程序按预期工作。在新聊天之前,旧聊天将附加到 div。