Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.07.2011, 19:52
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

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 сформирован у всех строк. Но выводится лишь у первой.
Ответить с цитированием
  #2 (permalink)  
Старый 25.07.2011, 20:22
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

я так понимаю, функция html() в jQuery просто добавляет html на страницу, но не вносит его в DOM?
Ответить с цитированием
  #3 (permalink)  
Старый 25.07.2011, 20:33
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

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

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

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

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

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

я думаю, ты понял, о чём я
.....
Цитата:
firebag
огненная сумка!!!
Ответить с цитированием
  #4 (permalink)  
Старый 25.07.2011, 20:34
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

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

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

Последний раз редактировалось ArmagedDance, 25.07.2011 в 20:44.
Ответить с цитированием
  #5 (permalink)  
Старый 25.07.2011, 20:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

а да..ясно.просто используй live, а не click
Ответить с цитированием
  #6 (permalink)  
Старый 25.07.2011, 20:49
Кандидат Javascript-наук
Отправить личное сообщение для ArmagedDance Посмотреть профиль Найти все сообщения от ArmagedDance
 
Регистрация: 07.12.2009
Сообщений: 147

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание HTML страниц Sportlife89 (X)HTML/CSS 7 03.06.2011 15:04
Передача кода HTML Владимир Седов Общие вопросы Javascript 2 12.04.2011 16:48
Обработка DOM после Ajax-запроса Игорь87 Общие вопросы Javascript 2 05.01.2011 19:23
Очень нужно.. Отправка HTML куски в JSON от сервера используя Ajax bivnikus jQuery 8 26.10.2010 23:54
Динамические html элементы sky Элементы интерфейса 2 07.03.2010 11:58