Установить data-attribute, если содержит изображение как дочерний

0

Чтобы заставить работать мой лайтбокс, я пытаюсь установить атрибут 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 не установлен. Что я сделал не так?

Теги:
lightbox
jquery-data

2 ответа

3
Лучший ответ

Пытаться

$(".single .entry-content a:has(> img)").attr('data-lightbox', 'image-gallery')

Демо: скрипка

  • 0
    api.jquery.com/has - стоит отметить , что установка data- атрибут технически отличается использованием .data() метод сеттер, и почему. В более старых версиях jQuery свойства .data() устанавливались один раз при загрузке DOM, и добавление атрибута data- позже не изменило бы .data() . Это больше не верно в текущих версиях jQuery.
2

Функция jQuery .data() не добавляет атрибуты данных, но вместо этого использует собственный механизм хранения. Чтобы изменить атрибут, вам необходимо использовать attr():

$('.single .entry-content a').has('> img').attr('data-lightbox', 'image-gallery');
  • 0
    +1 за объяснение, но Арун был первым. Сожалею!
  • 0
    +1 от меня тоже. Меня раздражает, когда люди не могут объясняться.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню