Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обратиться к элементу DOM, добавленному JS (https://javascript.ru/forum/events/26069-obratitsya-k-ehlementu-dom-dobavlennomu-js.html)

Cryolite 24.02.2012 13:44

Обратиться к элементу 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 также не помогла

DreamTheater 24.02.2012 13:52

Цитата:

Сообщение от Cryolite (Сообщение 159630)
Мне нужно обратиться по id к элементу и извлечь содержимое. Такое возможно? Обращался к существующим элементам - проблем нет. А вот к созданным...

Возможно.

Cryolite 24.02.2012 13:58

Стандартным способом document.getElementById(''dataN') не срабатывает, по дереву от "list" тоже , но мне подходит только по идентификатору, т.к я не знаю места расположение нужного мне элемента в списке.

Cryolite 24.02.2012 16:05

$(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 во вне, но похоже такое нельзя сделать.

Cryolite 24.02.2012 16:53

После вызова первой функции селект заполняется
<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.