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 сформирован у всех строк. Но выводится лишь у первой. |
я так понимаю, функция html() в jQuery просто добавляет html на страницу, но не вносит его в DOM?
|
ну раз правильно построены атрибуты (точно ли?), то проблема где-то тут
$(".new_session_delete").click(function(){ var session_view=$(this).parent().parent().attr('session'); alert(session_view); }); посмотри, что за элемент ловится при клике : console.log( this ); и наведи на него в консоли. на странице подсветится этот элемент Цитата:
я думаю, ты понял, о чём я :) ..... Цитата:
|
$(".new_session_delete").click(function(){
alert("работает"); }); вот такой код не работает для строк, вставленных динамически(( На скрине ясно видно наличия ссылки с классом new_session_delete Но код выше не работает. Просто черная магия какая-то! |
а да..ясно.просто используй live, а не click
|
Все ясно, для объектов, которые появляются в результате работы скрипта на странице, не изначально, надо live() использовать. Спасибо)
|
Часовой пояс GMT +3, время: 05:51. |