AJAX から返されたデータをメーソンリー コンテナーに追加すると、以前に読み込まれた項目に既に適用されているグリッド レイアウトが取得されません。ドキュメント対応関数にラップされた次のコードを使用しています。
// Masonry
var $container = $('#masonry-container');
$container.imagesLoaded(function () {
$container.masonry({
itemSelector: '.grid_4',
isAnimated: true
});
});
// AJAX Fotolia Image Search
var morebtn = $('.get-more-results');
var sOffset = 50;
morebtn.on('click', function () {
var $cst = $('.crrsrch').text();
$.ajax({
type: "POST",
url: "...",
data: {};
success: function (data) {
$container.imagesLoaded(function () {
$container.append(data);
$container.masonry('appended', data);
});
}
});
return false;
});
AJAX 呼び出しからの項目が追加されますが、石積みのレイアウトはありません。追加されたように表示されるのではなく、リストの一番上に表示されます。データはマークアップに追加されています。
Masonry に追加されたメソッドを使用すると、エラーもスローされます。コンソールに次のように表示されます。
Uncaught TypeError: Property 'webkitMatchesSelector' of object is not a function
i
r._filterFindItemElements
r._getItems
r.addItems
r.appended
t.fn.(anonymous function)
(anonymous function)
doneLoading
最後の 2 つ ((無名関数) と doneLoading) を除いて、これらはそれぞれ masonry js ファイルに関連しています。
石工サイトのメソッド ドキュメントを使用すると、これでうまくいくはずです。明らかに、ここで何かが欠けています。
役立つ追加情報 - - AJAX 呼び出しは Fotolia API に対するものです - サイトは Wordpress 3.5.2 で構築されています - JavaScript ファイルはキューに入れられています
誰かが何かアイデアを持っているか、助けを提供できるなら、それは大歓迎です。
よろしくお願いします。