LINUX.ORG.RU

Какая разница между элементами созданными на этапе формирования страницы и добавленными динамически?

 , ,


0

1

В общем, проблема в следующем. Есть страница, на которой таблица генерируется с помощью PHP. Вот она:

<tbody>
	<?php foreach ($identifiers as $identifier) { ?>
		<tr>
			...
			<td style="width: 25%">
				<!-- date picker -->
				<div style="margin-left: 0px; margin-right: 0px; margin-bottom: 0px" class="form-group">
					<div class="input-group date">
						<input class="form-control" type="text" placeholder="Дата" value="<?=$identifier['checkDate']?>">
						<div class="input-group-addon dp3" data-date-viewmode="years" data-date-format="yyyy-mm-dd" data-date="<?=(date('Y-m-d', time()));?>">
							<span class="glyphicon glyphicon-calendar"></span>
						</div>
					</div>
				</div>
			</td>
			...
		</tr>
	<?php } ?>
<tbody>
Я делаю вот это:
$("[name='add-identifier']").on("click", function() {
	var row = $('#identifiers-table tbody tr:first').clone(true);
	row.find(':nth-child(1)').find("select").find('option:selected').attr('selected', false);
	row.find(':nth-child(2)').find( "input").val('');
	row.find(':nth-child(3)').find( "input").val('');
	row.insertAfter( '#identifiers-table tbody tr:last' );
});
Т.е. копирую строку и вставляю в конец, зануляя значения. При этом, во вставленной строке date-picker работает не правильно - при нажатии на него всплывающее окошко появляется у первого дейт-пикера (т.е. того, из которого мы сделали новую строку). Если удалить строку, из которой мы получили новую и нажать на копку - всплывающее окошко с выбором даты появится сверху слева.

Я так думаю, что где то хранится какой-то id, который тоже копируется, но не хотелось бы лезть в код этого дейт-пикера.

Куда копать?

Перемещено beastie из development

Deleted
.clone(true);

С параметром true копируются и все события (events) тоже. Копируй только кусок DOM и после инициализируй data-picker для каждой строки.

Black_Roland ★★★★
()

Разница в том, что пых часто генерит страницу с данными из БД, к твоему JS для аналогичного решения надо писать сервис, который должен уметь в кэш, реплику, мастер-мастер и т.п., а то набегут хацкеры и положат его с ноутбука через перл-скрипт в 10 строк :)

gh0stwizard ★★★★★
()
Ответ на: комментарий от Black_Roland

С параметром true копируются и все события (events) тоже. Копируй только кусок DOM и после инициализируй data-picker для каждой строки.

Да, я так и предполагал. А можно как-то инициализировать обработчик только для дейт-пикера? У меня еще есть элементы управления таблицей, например добавление или удаление строки, которые работают хорошо.

Deleted
()
Ответ на: комментарий от gh0stwizard

хацкеры и положат его с ноутбука через перл-скрипт в 10 строк

Вот это ужас...

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.