Ответ 1
Вы не сможете увидеть его в инспекторе элементов, но он существует, поскольку jquery устанавливает атрибут данных внутри.
попробуйте console.log($(this).data('height'));
Это кажется очень простым, но я не понимаю, почему он не работает. Селектор правилен, однако div .faqContent
просто не обновляется атрибутом data-height
.
$('.faqItem .faqContent').each(function(){
var h = $(this).height();
$(this).data('height',h);
});
Я проверил, что var h
верен, он находится в colsole.log, правильно удерживая высоту.
ИЗМЕНИТЬ Это абсолютно не конфликтует, а консоль не показывает ошибок.
Вы не сможете увидеть его в инспекторе элементов, но он существует, поскольку jquery устанавливает атрибут данных внутри.
попробуйте console.log($(this).data('height'));
Функция data
сбивает с толку много людей, это не только вы.: -)
data
управляет внутренним объектом данных jQuery для элемента, не data-*
атрибутами. data
использует атрибуты data-*
для установки начальных значений. Он никогда не устанавливает атрибуты data-*
для элементов.
Если вы действительно хотите установить атрибут data-*
, используйте attr
:
$(this).attr("data-height", h);
Но если вы просто хотите эту информацию для будущего использования, data
в порядке, просто не ожидайте увидеть ее в инспекторе DOM, потому что jQuery не записывает эту информацию в DOM.
.data()
хранит только новое значение в памяти (или внутренне). Он не изменит атрибут в DOM, поэтому вы не сможете его обновить с помощью инструментов инспектора.
Чтобы изменить атрибут, вы можете использовать . attr():
$('.faqItem .faqContent').each(function(){
var h = $(this).height();
$(this).attr('data-height',h);
});
JQuery.data() сохраняет значение самого элемента, он не добавит атрибут.
Если вы хотите добавить атрибут, используйте attr:
$('.faqItem .faqContent').each(function(){
var h = $(this).height();
$(this).attr('data-height', h);
});