Задать вопрос
@miniven

Почему jQuery.data() не обновляет значение атрибута?

Есть вот такой блок:

<div class="employee">
	<input type="text" class="select" name="program_name[]" onkeydown="return false;" data-active="0">
	<button class="delete-btn" data-type="delete"></button>
	<input type="text" name="employee_name" class="generate__input" id="employee_name" placeholder="Иванов Иван Иванович">
</div>


У него есть атрибут data-active со значением 0
Я динамически добавляют такой же елемент путем копирования и хочу, чтобы этот атрибут был на 1 больше последнего:

addBtn.click(function(e) {
		e.preventDefault();
		var lastId = $( ".employee:last .select" ).data('active');
		$( ".employee:first" ).clone().appendTo(".generate__section_employee");
		$( ".employee:last input" ).val('');
		$( ".employee:last .select" ).data('active', lastId + 1);
	});


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

var selectedId;

	$(document).on('click', '.select', function() {
		selectBox.show();
		selectedId = $(this).data('active');
		console.log('Выбранный селект: ' + selectedId);
	});


И в итоге в консоле все показывается правильно, а когда нахожу элемент в DOM, то там data-active все еще равен 0.
В чем проблема?
  • Вопрос задан
  • 3973 просмотра
Подписаться 1 Оценить Комментировать
Решение пользователя Алексей Уколов К ответам на вопрос (4)
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
В чем проблема?
В том, что jQuery.data() не обновляет значение атрибута ноды. Если вам нужно, чтобы значение обновлялось, используйте .attr('data-active', selectedId).
Но, скорее всего, вам это не нужно - вы же не читаете в скриптах значение этого атрибута не через jQ?
Ответ написан