Я пытаюсь понять это. Я использую вызов AJAX для заполнения div содержимым (divs, содержащие локально сохраненные изображения и текст). Ajax-вызов выполняется успешно, но divs во второй строке частично перекрывают те, что указаны в первой строке.Каменная кладка и перекрывающиеся divs
Вот сценарий, я работаю с:
var $allF = $('#allItems');
$(document).ready(function() {
$allF.imagesLoaded(function() {
$allF.masonry({
itemSelector: '.box',
isAnimated: true,
animationOptions: {
duration: 500,
easing: 'linear',
queue: false
},
isFitWidth: true,
columnWidth: 10
});
});
loadAllItems();
});
function loadAllItems() {
$.ajax({
url: '/Ajax/LoadAllItems',
type: 'POST',
dataType: 'json',
data: { skip: (pageIndex * pageSize), take: pageSize },
success: function (posts) {
var items = '';
$.each(posts, function(p, post) {
items += 'html removed to keep post short';
});
var $itemBlock = $(items);
$allF.append($itemBlock);
$allF.masonry('appended', $itemBlock);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(xhr.responseText);
console.log(thrownError);
}
});
}
Все элементы контента имеют одинаковую ширину 130 пикс, но высота каждого элемента может изменяться на целых 20 до 30 пикселей. Есть что-то, что я пропустил? Я пробовал Q & A на кладке, но безрезультатно.
Любая помощь была бы принята с благодарностью.
Спасибо!
Скорее всего, вы столкнулись с этой проблемой, потому что изображения не загружается при обновлении кладки, вы должны перезагрузить кладку после того, как изображения были полностью загружены. Используйте https://github.com/desandro/imagesloaded, что –
@SaqibAmin Благодарим за комментарий. Я проверю его здесь в нескольких. Один вопрос: jquery.masonry.min.js, как представляется, содержит определение для imagesLoaded - в чем разница между этим и тем, что вы предложили? –
Нет никакой разницы. В вашем пакете уже есть библиотека с загруженной картинкой, вам не нужно ее снова загружать. –