На моем сайте у меня есть список продуктов в кладке. Все отлично работает Но при попытке добавить бесконечный список с помощью Ajax мой макет кладки не работает должным образом. Ошибка выглядит примерно так, как показано ниже:
Первые элементы загружаются правильно. Когда я добираюсь до конца страницы, новые элементы перекрывают старую, и кладочная система перестает работать, и все траншеи выглядят без кладки.
Мой код в шаблоне выглядит следующим образом ( другие файлы ):
<div class="row masonry infinite-container">
{% for object in numbers %}
<div class="masonry-item col-3 infinite-item">
<!--Content-->
</div>
{% endfor %}
</div>
<!-- Load more -->
{% if numbers.has_next %}
<a href="?page={{ numbers.next_page_number }}" class="btn">Loading...</a>
{% endif %}
<!-- end pagination -->
<!-- Infinite Scroll -->
<script src="{% static 'assets/js/jquery-3.1.1.min.js' %}"></script>
<script src="{% static 'assets/js/jquery.waypoints.min.js' %}"></script>
<script src="{% static 'assets/js/infinite.min.js' %}"></script>
<script>
var infinite = new Waypoint.Infinite({
element: $('.infinite-container')[0]
});
</script>
JS
var Masonry = (function() {
// Variables
var $masonryContainer = $(".masonry-container");
// Methods
function init($this) {
var $el = $this.find('.masonry'),
$filters = $this.find('.masonry-filter-menu'),
$defaultFilter = $filters.find('.active'),
defaultFilterValue = $defaultFilter.data('filter');
var $masonry = $el.imagesLoaded(function() {
// Set default filter if exists
if (defaultFilterValue != undefined && defaultFilterValue != '') {
if (defaultFilterValue != '*') {
defaultFilterValue = '.' + defaultFilterValue;
}
$defaultFilter.addClass('active');
}
// Plugin options
var options = {
itemSelector: '.masonry-item',
filter: defaultFilterValue
};
// Init plugin
$masonry.isotope(options);
});
// Sorting buttons (filters)
$filters.on('click', 'a', function(e) {
e.preventDefault();
var $this = $(this),
val = $(this).attr('data-filter');
if (val == '*') {
val = '';
} else {
val = '.' + val;
}
$masonry.isotope({
filter: val
}).on( 'arrangeComplete', function() {
$filters.find('[data-filter]').removeClass('active');
$this.addClass('active');
} );
});
}
// Events
if ($masonryContainer.length) {
$masonryContainer.each(function() {
init($(this));
})
}
})();
Как я могу исправить эту ошибку? Я не знаю много о ajax, но похоже, что новый запрос загружается без учета моего масонского кода.