#javascript #jquery #dynamic #getelementbyid
#javascript #jquery #динамический #getelementbyid
Вопрос:
Поэтому, когда код …
document.getElementById('classhere').childNodes
.. при запуске мне удается получить все элементы с этим идентификатором, ЗА ИСКЛЮЧЕНИЕМ элементов, которые были динамически созданы функцией ‘createDiv()’:
function createDiv()
{
var divTag = document.createElement("div");
divTag.id = "classhere" num;
...
Я хотел бы получить все элементы div с этим идентификатором, даже динамически созданные элементы div. Есть ли у кого-нибудь решение? Спасибо!
Комментарии:
1. Вы уверены, что ваш div уже создан?
2. Добавляете ли вы динамически созданный div в DOM страницы? можете ли вы опубликовать всю свою
createDiv
функцию и ту часть кода, где вы создаете новые divs
Ответ №1:
Попробуйте использовать jQuery подстановочный знак jQuery http://www.emadibrahim.com/2009/07/25/jquery-wildcard-selector /
Ответ №2:
Поэтому, когда код …
document.getElementById('classhere').childNodes
… при запуске мне удается получить все элементы с этим идентификатором
getElementById
ищет отдельный элемент по идентификатору, а не по классу. Эта строка, заключенная в кавычки, будет искать элемент с id
значением «classhere» и возвращать NodeList
его непосредственные дочерние узлы (элементы, текстовые узлы и т.д.). Если вы создадите дополнительные элементы и либо не добавите их в DOM, либо добавите их в другом месте (не как непосредственные дочерние элементы элемента «classhere»), их не будет в NodeList
. Это не имеет никакого отношения к тому, были ли они созданы во время основного синтаксического анализа HTML или постфактум с помощью JavaScript.
Я хотел бы получить все элементы div с этим идентификатором…
Может быть только один элемент с заданным идентификатором.
Если вы пытаетесь найти все элементы, id
начинающиеся с «classname», вы можете использовать «атрибут, начинающийся с селектора»:
var divs = $("div[id^='classname']");
…выдает вам объект jQuery, содержащий все соответствующие элементы div на момент выполнения инструкции (в отличие от a NodeList
, он не работает в реальном времени; если вы что-то измените, вам придется снова запускать селектор).