2016-01-07 2 views
2

Я в настоящее время пользуюсь Lightbox2 от Lokesh Dakhar, чтобы отобразить галерею изображений продуктов на веб-сайте онлайн-каталога.Стоп Lightbox2 галерея на {display: none;} images

Пример:

[Yellow Banana] [Red Apple] [Yellow Lemon]  ← Image Gallary 

Я также с помощью фильтра поиска на сторону клиента (сузить результаты конкретной информации), которая скрывает изображения продукта путем присоединения правила CSS display: none, если входные данные не соответствуют названию продукта.

Пример:

Search: Yellow 

Результат:

[Yellow Banana] [Yellow Lemon] 

Мои Проблема в том, что Gallary Lightbox2 все еще показывает в этих двух продуктов на «следующее изображение Lightbox-х годах [Red Apple] ».

Есть ли способ приложить заявление if к сценарию Лайтбокс, заставляя его игнорировать продукты с display: none, которые в настоящее время прикреплены к ним?

Воспроизводится Проблема в: JSFiddle с документацией.

+0

Ваш пример javascript не jquery – Zl3n

+0

@ Zl3n Лайтбокс - это плагин jQuery и на самом деле использует jQuery. Тег имеет значение, imo. – CronosS

+0

@CronosS точный. Сожалею. Но я не могу ему помочь, я не знаю чистого Javascript ... – Zl3n

ответ

2

Ниже представлена ​​версия вашего обработчика событий input, который сделает трюк.

document.getElementById("search").addEventListener("input", function() { 
    var filter = this.value, 
    pictures = $(".searchable"); 

    pictures.each(function() { 
    if (this.dataset.index.toLowerCase().indexOf(filter.toLowerCase()) !== -1) { 
     $(this).show().find("a").attr("data-lightbox", "roadtrip"); 
    } else { 
     $(this).hide().find("a").attr("data-lightbox", "ignore"); 
    } 
    }); 
}); 

Этот код использует jQuery для скрытия/отображения фильтрованных элементов, а не для установки тега стиля на странице.

Лайтбоксы обрабатывает изображения как группу, когда у них тот же самый атрибут data-lightbox. Чтобы исключить изображение из группы, просто измените этот атрибут (игнорировать, в моем примере).

+0

Работал! Спасибо, однако, похоже, он добавил еще одну небольшую ошибку. При поиске элемента, если вы делаете случайную опечатку «16FF» и удаляете опечатку (в этом случае дополнительную «F») элементы не появляются, если вы не очистите поле ввода и не заново введите «16F» правильно , Это не огромная проблема, но если вы знаете исправление, которое было бы высоко оценено! Обновлено [JSFiddle] (https://jsfiddle.net/BobaMilkTease/21orz43n/5/) – Ghost

+0

@Ghost Спасибо за отзыв. Ответ отредактирован с помощью нового кода js. – CronosS