Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Доступ к динамическому содержанию дива (https://javascript.ru/forum/dom-window/25771-dostup-k-dinamicheskomu-soderzhaniyu-diva.html)

Dmitri 15.02.2012 02:31

Доступ к динамическому содержанию дива
 
Здравствуйте, уважаемые господа программисты.
Наткнулся на небольшую проблему. Сейчас делаю миничат, для отображение сообщений использую див и через аякс загружаю туда инфу каждые 5 сек.
Вот див куда поступают сообщения, ничего сложного :)(Див в оригинале пустой, но привожу пример структуры сообщений)
<div id='wrap'>
    <div id='chat'>

<p><span class='nick'> NICKNAME</span>: <span class=message>MESSAGE</span></p>
                
    </div>
 </div>


Вот функция обновления чата
function refreshChat(){
    $.ajax({
	url:'obnovit.php',
	data:'id=".$_GET['name']."',
	cache:false,
	success:function(html)
	{   
                 $('#chat').html(html);
                 document.getElementById( 'chat' ).scrollTop=99999;
                 setTimeout(refreshChat,5000);
                      }
    });
}


Но какой же чат без бана :) И вот тут начинается самое интересное. Задумка: для модера я предоставляю функцию- при клике на ник-нэйме в поле с сообщениями, выезжает окошко, где можно выбрать меру наказания.

Основа функции
$('.nick').click(function(){
})


Но так дело не идет - ф-ция не работает при клике на ник-нейм в чате.
Если такой же класс разместить в любом другом месте документа,то клик работает. Я уже думал, что скрипты не имеют доступа к динамическому контенту, но попробовав
$(document).click(function(){
$('.nick').html('');
})

убедился, что до перезагрузки окна чата, все ник-неймы были успешно удалены.

Чисто интуитивно решил втулить функцию в функцию
function refreshChat(){
    $.ajax({
	url:'obnovit.php',
	data:'id=".$_GET['name']."',
	cache:false,
	success:function(html)
	{   
                 $('#chat').html(html);
                 document.getElementById( 'chat' ).scrollTop=99999;
                 setTimeout(refreshChat,5000);

                 $('.nick').click(function(){
}) 
                  }

    });
}


И функция заработала , ура...но такая реализация есть извращение,плюс эта функция имеет свой аякс запрос, который вместо 1го раза выполняется произвольное количество раз. Кто-нибудь с подобным сталкивался?

Dmitri 15.02.2012 12:14

Коротко и ясно :dance: Спасибо.


Часовой пояс GMT +3, время: 19:46.