Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сгенерированный HTML не откликается на события (https://javascript.ru/forum/misc/23206-sgenerirovannyjj-html-ne-otklikaetsya-na-sobytiya.html)

posta 16.11.2011 04:33

Сгенерированный HTML не откликается на события
 
Ребята, подскажите, кто сталкивался с такой проблемой:

Генерирую следующий код хтмл :
for(var key in data) {
	var div_uno='<div class="post-addcodes-uno" rel="'+data[key].code_id+'"><div class="tb-btn del" rel="'+data[key].code_id+'">КНОПКА</div></div>;
	
	$("#post-add").append(div_uno);
}


Т.е. получается несколько КНОПОК.

Почему не работают свойства:
$('.post-addcodes-uno .del').click() и
$('.post-addcodes-uno .del').on()

Но работает так:
$('.post-addcodes-uno .del').live('click',function(e){
   console.log(this); // работает нормально, НО!
   
   // Не могу получить доступ к объектам внутри this
   console.log(this.attr("rel"));
   console.log(this.rel); //console.log(this["rel"]);

   // а так же не получается применить к this различный функции. Например parent()
   this.parent();

})



В не-сгенерированном коде все работает прекрасно. Если же код сгенерирован - то ничего не происходит. Объект как бы в изоляции.

Matre 16.11.2011 05:19

Обычные события не навешиваются на сгенерированные элементы, т.к. на момент навешивания события их ещё нет.
Тут два варианта: либо использовать live-events, либо навешивать события после того, как код сгенерирован.

Цитата:

// Не могу получить доступ к объектам внутри this
Потому что писать надо так:

$(this).attr("rel");
$(this).parent();

posta 16.11.2011 07:53

Блин... спасибо большое.. реально ступил ))


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