В Sitefinity CMS, я использую сценарий галереи, который, как представляется, компилируется в бэкэнд-файлах. Другими словами, я не могу получить доступ и изменить исходный код.Оберните динамический контент с помощью jQuery
Галерея работает так, как должно, но я хотел бы добавить к ней лайтбокс. Поэтому я начал использовать «wrapAll» в сочетании с загрузкой. Это работает на самом первом изображении, но как только следующее изображение загружается динамически (другими словами, изображение и окружающие теги заменяются), он перестает работать.
Я застрял. Любая идея?
Мой код:
$(window).on("load", function() {
var i = 0;
$(".galleria-images .galleria-image img").each(function() {
i++;
//alert(i);
var lightboximg = $(this).attr("src");
$(this).wrap("<a href=" + lightboximg + " class='fancybox'></a>");
});
$(".fancybox").fancybox();
})
Я также попытался просто добавить FancyBox() в структуре, но это работает один раз, а также.
Сгенерированный HTML (как это должно быть):
<div style="position: relative; top: 0px; left: 0px; width: 100%; height: 100%;" class="galleria-images">
<div style="overflow: hidden; position: absolute; top: 0px; left: 0px; transition: none 0s ease 0s ; opacity: 0; z-index: 0;" class="galleria-image"><div style="position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; z-index: 2;" class="galleria-layer"></div>
<div style="overflow: hidden; position: absolute; top: 0px; left: 0px; z-index: 4; background: rgb(0, 0, 0) none repeat scroll 0% 0%; display: none;" class="galleria-frame">
</div>
</div>
<div style="overflow: hidden; position: absolute; top: 0px; left: 0px; opacity: 1; width: 563px; height: 340px; transition: none 0s ease 0s ; z-index: 1;" class="galleria-image"><div style="position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; z-index: 2; display: none; width: 563px; height: 352px;" class="galleria-layer">
</div>
<div style="overflow: hidden; position: absolute; top: 0px; left: 0px; z-index: 4; background: rgb(0, 0, 0) none repeat scroll 0% 0%; display: none;" class="galleria-frame">
</div>
<a href="/images/default-source/scholen/adm/administratief-en-juridisch-44.jpg?sfvrsn=2" class="fancybox">
<img src="/images/default-source/scholen/adm/administratief-en-juridisch-44.jpg?sfvrsn=2" style="display: block; opacity: 1; min-width: 0px; min-height: 0px; max-width: none; max-height: none; transform: translate3d(0px, 0px, 0px); width: 544px; height: 340px; position: absolute; top: -6px; left: 0px;" height="340" width="544"></a>
</div>
</div>
следующее изображение выглядит так же, за исключением того, изображение не обернуты.
обновление
В конце концов решил ее убить и Galleria запустить его снова, используя свои собственные варианты. Выписка:
Galleria.configure({
extend: function (options) {
Galleria.log(this) // the gallery instance
Galleria.log(options) // the gallery options
// listen to when an image is shown
this.bind('image', function (e) {
Galleria.log(e) // the event object may contain custom objects, in this case the main image
Galleria.log(e.imageTarget) // the current image
lightboximg = jQuery(e.imageTarget).attr("src");
jQuery(e.imageTarget).addClass('test');
jQuery(e.imageTarget).wrap("<a href=" + lightboximg + " class='fancybox'></a>");
$(".fancybox").fancybox();
});
}
});
Спасибо вы за свой ответ. Чтобы быть честным, я действительно не знаю, что вы делали в первом скрипте. Я попробовал это, добавив класс (это сработало), но добавление или упаковка просто не было. Я в конце концов решил его, убив плагин galleria и снова инализируя его. Если у вас есть время, чтобы объяснить, почему addclass работает, но добавить это не так, мне бы очень хотелось узнать. Спасибо за Ваш ответ! – mat
В сценарии у меня есть две функции, сначала добавляя элементы на страницу, чтобы имитировать ваш прецедент, второй ищет новые элементы и меняет стиль, а затем удаляет «новый» класс, поэтому он будет пропущен в следующий раз. Странно, но, обертывание работает для меня так же хорошо, как изменение цвета. Так что просто взгляните на обновленную скрипку: https://jsfiddle.net/s4jo3gxu/2/ Надеюсь, он ответит на ваш вопрос.Если нет, сообщите мне, мне также интересно. – Sargon
Я действительно не знаю, почему мой не работает. Код кажется законным, и ваш пример работает нормально. Когда сайт приходит в производство (онлайн), я дам вам знать, чтобы вы могли взглянуть на него. Еще один вопрос. Почему ваш код работает, так это из-за 100 мс времени? Есть ли какое-нибудь другое решение, например, что-либо (изменение) или что-то в этом роде? – mat