nếu bạn đang sử dụng jQuery, điều này sẽ giải quyết mọi vấn đề của bạn.
Bạn đã bao gồm Masonry trong trang/php html của bạn với một cái gì đó như thế này:
<script src="js/masonry.min.js"></script>
<script>
$('#ms-container').masonry({
columnWidth: '.ms-item',
itemSelector: '.ms-item'
});
</script>
Thay vào đó, hãy để nó như thế này:
<script src="js/masonry.min.js"></script>
<script src="js/masonry-init.js"></script>
Và tạo ra các tập tin js/masonry-init.js
như sau:
$('#ms-container').masonry({
columnWidth: '.ms-item',
itemSelector: '.ms-item'
});
var masonryUpdate = function() {
setTimeout(function() {
$('#ms-container').masonry();
}, 500);
}
$(document).on('click', masonryUpdate);
$(document).ajaxComplete(masonryUpdate);
Không bao giờ phải lo lắng về điều đó nữa!
Nguồn
2014-04-15 13:13:55
Cảm ơn! Không chắc tại sao tôi cần nói với Masonry rằng đã có nội dung được thêm vào. Nó có thể nhận được điều đó từ DOM chỉ bằng cách tải lại các viên gạch khi được gọi. –
Vâng, tôi đoán chỉ xử lý các yếu tố mới có quy mô tốt hơn khi bạn có số lượng lớn các viên gạch. –
Có thể. Phụ thuộc vào số lượng viên gạch. Tôi có hơn 150 viên gạch được xếp chồng động và không có sự chậm trễ rõ rệt. –