После:
$("#boxes").append('<div id="chat_'+from+'_lp" class="chat_box hidden_box clickable_box" ><div id="name">'+from+'</div><ul id="chat_'+from+'_txt" class="chat_txt"><li id="' + msg_id + '">'+ msg_txt+'</li></ul></div>');
Добавить обработчик событий для вставленного элемента:
$('#chat_'+from+'_lp').click(function() { showChat(this) })
«this» передает ссылку на DOM себе.
Keep inпомните, что вы добавляете: <div id="name">
каждый раз.Идентификаторы должны быть уникальными.Вместо этого используйте имя класса.
РЕДАКТИРОВАТЬ:
Присоединение к DOM действительно довольно медленно.На самом деле более эффективно создать HTML-код в виде строки и просто вставить его за один раз.Кроме того, вам действительно нужно только прикрепить и ID на элемент обертывания.Все остальное можно извлечь из этого с помощью селектора jQuery.Это поможет вам написать более понятный код.
Вот строка, которую вам нужно добавить:
'<div id="chat_'+msg_id+'" class="chat_box hidden_box clickable_box">
<div class="chat_name">'+from+'</div><ul class="chat_txt"><li>
<a href="javascript://">'+msg_txt+'</a></li></ul></div>'
Если вы хотите выбрать имя чата позже, вы должны использовать: $('chat_1 .chat_name').html()
Также имеет смысл в семантическом смысле подключить ваш обработчик кликов к тегу A.Таким образом, вы будете использовать:
$('#chat_'+msg_id).find('a').click(function() {showChat(this);});
Код намного чище и легче следовать этому пути.Надеюсь, это поможет.