Почему jquery не видит изменения в разметке?

78
01 марта 2021, 16:30

Делаю аякс запрос, после которого меня значение атрибута. В DOM всё меняется, как положено. Но когда снова кликаю по кнопке - в консоль выводится старое значение аттрибута. Такое ощущение, что не видит изменения в разметке и подгружает старые данные.

$('.more_credits_first').click(function () { 
	var button = $(this) 
	var show = $(button).data('show'); 
	console.log(show) 
 
	if (show == 'show') { 
		$.get(window.location.pathname,{}).done(function(data){ 
			$('.tbody.main_credits').append(data.template); 
			$(button).attr('data-show', 'hide'); 
			$(button).text('Скрыть'); 
		}) 
	}	else { 
		$(this).attr('data-show', 'show'); 
		$(this).text('Ещё кредиты'); 
	} 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<button class='more_credits_first' type="button" data-show='show'>Кнопка</button>

Answer 1

Не нужно редактировать html-атрибут, редактируйте dataset.

Т.е. вместо $(button).attr('data-show', 'hide'); нужно:

button.data('show', 'hide');  

И то же самое для установки значения 'show':

button.data('show', 'show');  
READ ALSO
VueJS не обновляет стили элемента

VueJS не обновляет стили элемента

Пишу drag-and-drop с возможностью поворота и ресайза на VueJsСуть работы простая: отслеживаю перемещения мышкой, в соответствии с ними обновляю модель,...

90
Как имитировать ввод текста в input password

Как имитировать ввод текста в input password

Есть сайт на angular, сайт не мойХочу немного оптимизировать работу с ним для себя

96
В чём разница между querySelector и getElementById?

В чём разница между querySelector и getElementById?

Вопрос, возможно, слишком общий или не по теме, но мне интересноЯ видел, что кто-то использует querySelector для поиска элемента по id, а не по имени...

106