Невозможно получить доступ к элементу dom с помощью идентификатора после успешного клонирования и добавления его - PullRequest
1 голос
/ 24 марта 2011

Я готовлю клон шаблона div, присваиваю ему динамический идентификатор и добавляю его в DOM, например так: -

var chat_window_clone_obj = $('div#chat_window_template').clone();

cloned_element_id = 'chat_window'+dom_id_separator+session_id;
$(chat_window_clone_obj).attr('id',cloned_element_id);
$(chat_window_clone_obj).appendTo("div#chat_windows_holder");

Но после этого я не могу получить доступ к клонированному элементу, используя его идентификатор (проверено в Firefox, я уверен, что это будет одинаково во всех браузерах): -

$('div#chat_windows_holder').length // comes 0
$('div#chat_windows_holder').removeClass("hidden"); //does not work

Однако я могу получить доступ вот так: -

$(chat_window_clone_obj).length // works
$(chat_window_clone_obj).removeClass("hidden"); //works

Что мне здесь не хватает? Я вижу, что элемент правильно добавлен с нужным идентификатором на вкладке HTML в Firefox.

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Когда вы пытаетесь выбрать его по идентификатору, вы получаете оригинальный элемент - как в первом, который соответствует этому идентификатору. В вашем документе не должно быть дубликатов идентификаторов .Попробуйте это:

var chat_window_clone_obj = $("div#chat_window_template").clone();
chat_window_clone_obj.attr("id", "chat_window_clone");
$("#chat_window_clone").doSomething();
0 голосов
/ 20 апреля 2011

Ну, ребята, проблема была в том, что я использовал недопустимые символы в идентификаторе dom, который я назначал новым клонированным элементам.

Примерно так -

dom_id_separator = '%%--%%'; //  Character % is illegal

var chat_window_clone_obj = $('div#chat_window_template').clone();
cloned_element_id = 'chat_window'+dom_id_separator+session_id;

Проверка Какие символы разрешены в идентификаторах DOM? для списка допустимых символов.

Я правильно назначал динамические идентификаторы.Я удалил обертку chat_window_clone_obj с $() позже.

0 голосов
/ 24 марта 2011

Я думаю, проблема в том, что вы не используете правильный ID.Является ли chat_windows_holder идентификатором только что созданного объекта?Не похоже, что это в вашем примере кода.

Какое значение chat_window_clone_obj?Это значение, которое вы должны использовать в своем селекторе (вот почему работает второй пример).

...