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:56. |