masonryをajaxでページングした際に
2ページ目以降(ページ遷移なし)でmasonryが効きない事態に陥ってます。
「もっと見る」ボタンはなくinview.jsを使用して
オートロードするようになってます。
最初にnextTickを使用してみましたが
高さの計算が上手くいかず重なってしまいました。
javascript
1var deferred = ajaxPagingLoaderReady(options, loaderEl, 'auto', state, self, resultKey); 2 3 deferred.done(function() { 4 var units = $('.unit').not('.masonried'); 5 Vue.nextTick(function() { 6 new Masonry('.unitList', { 7 columnWidth: 360, 8 isFitWidth: true, 9 itemSelector: '.unit', 10 gutter: 20, 11 isAnimatedFromBottom: true 12 }); 13 units.each(function() { 14 $(this).addClass('masonried'); 15 }); 16 }); 17 }).fail(function() { 18 console.log('fail'); 19 });
その後、setIntervalを使用したコードに書き換えてみました。
最初の読み込みでは問題なく動いてるのですが
2回目の読み込みからmasonryが適応されません。
javascript
1 var deferred = ajaxPagingLoaderReady(options, loaderEl, 'auto', state, self, resultKey); 2 3 deferred.done(function() { 4 var units = $('.unit').not('.masonried'); 5 var renderMasonry = function() { 6 new Masonry('.unitList', { 7 columnWidth: 360, 8 isFitWidth: true, 9 itemSelector: '.unit', 10 gutter: 20, 11 isAnimatedFromBottom: true 12 }); 13 units.each(function() { 14 $(this).addClass('masonried'); 15 }); 16 }; 17 18 var interval = setInterval(function() { 19 console.log($('.unitList').height()); 20 if ($('.unitList').height() > 0) { 21 renderMasonry(); 22 clearInterval(interval); 23 } 24 }, 200); 25 }).fail(function() { 26 console.log('fail'); 27 });
検索をしてみたところ
imagesLoadedを使うといいと見たので試してみました。
javascript
1var deferred = ajaxPagingLoaderReady(options, loaderEl, 'auto', state, self, resultKey); 2 3 deferred.done(function() { 4 var units = $('.unit').not('.masonried'); 5 imagesLoaded('.unitList',function() { 6 new Masonry('.unitList', { 7 columnWidth: 360, 8 isFitWidth: true, 9 itemSelector: '.unit', 10 gutter: 20, 11 isAnimatedFromBottom: true 12 }); 13 units.each(function() { 14 $(this).addClass('masonried'); 15 }); 16 }); 17 }).fail(function() { 18 console.log('fail'); 19 });
最初と同じく重なってしまう状況になってます。
ご教示いただけますと幸いです。
【追記】
imgタグにwidth, heightを指定する解決方法もありましたが
JSONから取得しており幅高さは統一されておりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/02/04 11:20
2016/02/05 02:07 編集