Чтобы заставить работать мой лайтбокс, я пытаюсь установить атрибут data "lightbox" на ссылки, содержащие изображение в качестве дочернего элемента. Это, похоже, не слишком хорошо работает. У меня есть эта скрипка.
var links = $(".single .entry-content a");
links.each(function () {
if ($(this).children("img").length > 0) {
$(this).data("lightbox","image-gallery");
console.log("test");
}
});
Журналы консоли, но атрибут data не установлен. Что я сделал не так?
Пытаться
$(".single .entry-content a:has(> img)").attr('data-lightbox', 'image-gallery')
Демо: скрипка
Функция jQuery .data()
не добавляет атрибуты данных, но вместо этого использует собственный механизм хранения. Чтобы изменить атрибут, вам необходимо использовать attr()
:
$('.single .entry-content a').has('> img').attr('data-lightbox', 'image-gallery');
data-
атрибут технически отличается использованием.data()
метод сеттер, и почему. В более старых версиях jQuery свойства.data()
устанавливались один раз при загрузке DOM, и добавление атрибутаdata-
позже не изменило бы.data()
. Это больше не верно в текущих версиях jQuery.