I have a problem with Masonry plugin.
I try to load new content inside of a div container #myparts
.
Ajax works but div
containers .part
overlapping each other and I dont know why.
I have tried many solutions from the Internet but they don't work. Masonry should reload .parts
again after AJAX but it doesn't work.
Here is my Code:
<body>
<!--
data-user: is user-ID
data-article: is article-ID
-->
<div id="wrapper">
<div id="myparts" data-user="1">
<div class="part" data-article="1"></div>
<div class="part" data-article="2"></div>
<div class="part" data-article="3"></div>
<div class="part" data-article="4"></div>
</div>
<div id="button"></div>
</div>
</body>
My jQuery code:
// My Ajax
$(document).on("click", "#wrapper > #button", function () {
var $grid = $("#wrapper > #myparts").masonry({columnWidth: 22, itemSelector: '.part', isFitWidth: true}); // Masonry plugin
var user_d = $("#wrapper > #myparts").data("bid");
var article_id = $("#wrapper > #myparts > .part").last().data("article");
$("#pleasewait").fadeIn(); // open progressbar.
$.ajax({
url: "ajax/new-content.php",
method: "POST",
data: {user: user_d, article: article_id},
dataType: "html",
cache: false,
success: function (data) {
if (data !== '') {
$("#wrapper > #myparts").append(data); // Ajax work.
} else {
$("#wrapper > #myparts > #button").remove(); // Remove button if no more content in database
$grid.masonry();
}
},
complete: function () {
$("#pleasewait").fadeOut(500); // close progressbar.
}
});
});