У меня есть сайт, построенный на WordPress с несколькими сотнями сообщений. Каждое сообщение содержит до 10 изображений. Infinite Scroll используется для автоматического добавления большего количества сообщений. Я хочу, чтобы главная страница была страницей галерей изображений; по одному за сообщение.Галерея галереи Неправильно загружается после бесконечного прокрутки
Вот что у меня есть:
Во-первых, я добавляю галереи в почтовом цикле. Я использую идентификатор сообщения, чтобы создать уникальный идентификатор Galleria. Я также использовать второе имя класса передать соотношение изображения в JS (уверен, что есть лучший путь?):
<div id="galleria-1609" class="galleria 0.5">
<a href="img01-800x400.jpg" alt="Large Image" ><img src="thumb.png" /></a>
<a href="img02-800x400.jpg" alt="Large Image" ><img src="thumb.png" /></a>
</div>
... и затем добавляют Javascript ...
<script>
Galleria.run('#galleria-1609', {
thumbnails: 'numbers',
height: 0.5, /* ratio */
preload: 1
});
</script>
Это отлично работает для первого набора Галереи, но когда бесконечная прокрутка загружает больше сообщений, javascript лишается. После некоторых поисков я обнаружил, что Infinite Scroll имеет функцию обратного вызова с доступом к массиву новых элементов.
Так что я попробовал этот код в функции, вызываемой из бесконечной прокрутки обратного вызова:
function loadSliders(arrayOfNewElems) {
$(arrayOfNewElems).each(function(i) {
var newGal = $(this).find('.galleria');
//extract ratio from 2nd class name:
var ratio = $(newGal).attr('class').split(' ')[1];
var thisID = '#'+ $(newGal).attr('id');
Galleria.run(thisID, {
thumbnails: 'numbers',
height: ratio,
preload: 1
});
});
}
Это делает загрузить более один набор Galleries, но терпит неудачу после того, как с этой ошибкой:
TypeError: $(...).attr(...) is undefined
Любые идеи о том, почему я получаю эту ошибку или лучшие способы ее достижения?
Найден лучший способ ... Используя [атрибут данных HTML5] (http://www.w3.org/TR/html5/dom.html#embedding-custom-non-visible-data-with-the- data - * - attributes) Я создал атрибут 'data-ratio' на div Galleria и захватил его в JS выше, используя' var ratio = $ (this) .data ('ratio'); '. – henZa