Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Обращение к динамически созданным элементам. (https://javascript.ru/forum/dom-window/31942-obrashhenie-k-dinamicheski-sozdannym-ehlementam.html)

platedz 27.09.2012 01:12

Обращение к динамически созданным элементам.
 
Здравствуйте.
Через addEventListener вызываю событие mouseover и выполняю функцию, которая создает новый элемент
var el = document.createElement("div");
el.id = "ele";
Теперь мне нужно вызвать событие клик через addEventListener на этом элементе. Если данное событие вызвать в функции после создания элемента, то все работает, если же извне (отдельно), то не работает, т.к. видимо элемента не существует.
Соответственно, вопрос, как вызвать событие к еще несуществующим элементам?

devote 27.09.2012 02:07

el.addEventListener("click", function( e ) {
    alert( e.target ); // ссылка на наш элемент
}, false);

platedz 27.09.2012 02:47

Дело в том, что событие клик не сработает, т.к. видимо el еще нет. Нужно чтобы выполнялась функция при событие click на el. Который еще не создан.

bes 27.09.2012 10:33

Цитата:

Сообщение от platedz
Нужно чтобы выполнялась функция при событие click на el. Который еще не создан.

аналогия: дитя ещё не зачали, но оно уже чего-то делает

platedz 27.09.2012 13:40

el. еще не создан. Но инструкция уже есть. есть скажем в div 10 span. Я создаю одинадцатый. Вот на этот одинадцатый инструкция не распростроняется, а нужно чтобы распростронялось. В джиквери для этогго есть функция live к примеру.

bes 27.09.2012 13:45

ну если вещать обработчик на родителя, то ему по барабану сколько там у него детей

platedz 27.09.2012 14:11

Обращение идет через querySelectorAll("#id .class"). Хотя вопрос больше как сделать так, чтобы обращаться можно было ко всем элементам, не зависимо были они ранее созданы на странице или нет.

bes 27.09.2012 14:18

через e.target по признаку (классу, id и т.п.)
либо получать нужные элементы каждый раз при вызове обработчика, а не один раз

platedz 27.09.2012 14:49

Спасибо. А можно примеры с обоими вариантами, а то я что-то не соображу. Т.е. как мне вызвать их указав ("#id .class")

bes 27.09.2012 17:16

тестовый пример с возможностью запуска [html run]


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