Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   html() и запись в DOM (https://javascript.ru/forum/jquery/19082-html-i-zapis-v-dom.html)

ArmagedDance 25.07.2011 19:52

html() и запись в DOM
 
Помогите разобраться в проблеме.
Динамически формирую строки в таблице следующим образом:
Беру в качестве образца первую строку и вношу ее содержимое функцией html() при нажатии на кнопку в новую строку.

var session_counter=1;
var session_form=$("#new_profile_table tr[session=1]").html();
$("#add_session").click(function(){
session_counter++;
$("#new_profile_table").append('<tr session='+session_counter+'>'+session_form+'</tr>');
});

Строка добавляется правильно.
Но стоит попробовать добраться до атрибута session у тега tr как при клике он выводится лишь для первой строки. Для тех, что были сформированы динамически, он не отображается.
$(".new_session_delete").click(function(){
 var session_view=$(this).parent().parent().attr('session');
 alert(session_view);
});


Самое интересное, что в firebag действующий html код правилен - атрибут session сформирован у всех строк. Но выводится лишь у первой.

ArmagedDance 25.07.2011 20:22

я так понимаю, функция html() в jQuery просто добавляет html на страницу, но не вносит его в DOM?

melky 25.07.2011 20:33

ну раз правильно построены атрибуты (точно ли?), то проблема где-то тут

$(".new_session_delete").click(function(){
 var session_view=$(this).parent().parent().attr('session');
 alert(session_view);
});

посмотри, что за элемент ловится при клике :
console.log( this );

и наведи на него в консоли. на странице подсветится этот элемент

Цитата:

я так понимаю, функция html() в jQuery просто добавляет html на страницу, но не вносит его в DOM?
аналогия : я так понимаю, что когда я ем борщ, то он не попадает ко мне в желудок ?

я думаю, ты понял, о чём я :)
.....
Цитата:

firebag
огненная сумка!!!

ArmagedDance 25.07.2011 20:34

$(".new_session_delete").click(function(){
alert("работает");
});
вот такой код не работает для строк, вставленных динамически((

На скрине ясно видно наличия ссылки с классом new_session_delete
Но код выше не работает. Просто черная магия какая-то!

melky 25.07.2011 20:36

а да..ясно.просто используй live, а не click

ArmagedDance 25.07.2011 20:49

Все ясно, для объектов, которые появляются в результате работы скрипта на странице, не изначально, надо live() использовать. Спасибо)


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