Обратиться к элементу DOM, добавленному JS
Доброго времени суток.
У меня такая проблема: Генерируется список с помощью JS (Jquery) вида <div id="list"> <p id="data1">dataText1</p> ... <p id="dataN">dataTextN</p> </div> Изначально на странице есть <div id="list"></div> Мне нужно обратиться по id к элементу и извлечь содержимое. Такое возможно? Обращался к существующим элементам - проблем нет. А вот к созданным... UPD. C помощью ajax запроса в <select id="select"></select> записываются <option value="dataN">Text</option>. Оставшаяся часть данных попадает в <div id="list"></div> в виде <p id="dataN">dataTextN</p> ajax выполняется при загрузке страницы ($(document).ready..), вторая функция при изменении значения select. Если подскажите простенький пример буду благодарен. установка setTimeout также не помогла |
Цитата:
|
Стандартным способом document.getElementById(''dataN') не срабатывает, по дереву от "list" тоже , но мне подходит только по идентификатору, т.к я не знаю места расположение нужного мне элемента в списке.
|
$(document).ready(function(){ $.ajax({ url: "aa/aa.php", dataType: 'json', success: function(data){ var items = []; $.each(data, function(key, val){ items.push("<option value="+val[3]+">" + val[0]+' '+val[1] +' ('+val[2]+')</option>'); }); var contactData = []; $.each(data, function(key, val){ contactData[val[3]]= val[0]+'#'+val[1]+'#'+val[2]; $('<p/>', { 'id': val[3], html: contactData[val[3]] }).appendTo('#infobox'); }); $('.list').append(items.join('')); } }); }); //Приходит многомерный массив, из которого формируется селект и наполняется див // При выборе из селект, нужно обратится к скрытому <p id='''> и взять содержимое для дальнейшей обработки $(document).ready(function(){ $( ".list" ).change(function() { var cid = $(this).val(); var cidData = $(cid).html(); //тут проблема $("#debugbox").empty().append(cidData); }); }); <select class="list"></select> <div id="infobox"></div> <div id="debugbox"></div> Прошу прощения что на Jquery, не в той теме UPD В теге p записывается больше элементов массива. Иначе можно было бы взять все из селекта. Как альтернативу ищу способ передать data или массивы из $.ajax во вне, но похоже такое нельзя сделать. |
После вызова первой функции селект заполняется
<select class="list"> <option value="num1">Text1</option> <option value="num2">Text2</option> </select> если написать $("#debugbox").empty().append(cid); будет нарисован value select'a. (num1 - например) var cidData = $(cid).html();- тут Id <div id="infobox"><p id="no1">Text</p></div> должен быть Но на деле там <div id="infobox"></div> так и остается ------------------ Получилось , действительно в решётке дело оказалось. Сам бы не дошёл. Большое спасибо. P.S. А почему так писать не стоит, можете пояснить, если это не сложно? |
Часовой пояс GMT +3, время: 18:14. |