「無限スクロール」効果を作成するために、jQuery組積造にアイテムを非常にうまく追加することができました。
Masonifiedコンテンツの前にコンテンツを追加するには、同様の戦略が有効だと素朴に思いました。
私はこのように石積みを設定します:
$(document).ready(function(){
var $container = $('#pics');
$container.imagesLoaded(
function(){
$container.masonry({
itemSelector : '.item',
isFitWidth: true,
isAnimated: true });
});
});
元の画像はこのループ内に表示されます(JavaでPlayframework 1.2.4を使用)
<div id="pics" class="pics">
#{list items:pics, as:'pic'}
<div class="item">
<a href="https://s3.amazonaws.com/bucket/${pic.url}"/>
<img src="https://s3.amazonaws.com/bucket/${pic.url}" class="pic" style="height:${pic.height}">
</a>
</div>
#{/list}
</div>
そして、これは私が新しい写真を石工の「newpics」divに追加しているところです:
$.each(data.files, function (index, file) {
var filename_leaf = milliTime+"-"+file.name;
var filename_stem = "https://s3.amazonaws.com/bucket/";
var filename = filename_stem+filename_leaf;
var newpic = "<div class='item'>"+
"<a href='"+filename+"'>"+
"<img src='"+filename+"'"+
" class='pic' style='height:"+file.height+"'>"+
"</a></div>";
$('#pics').prepend(newpic).masonry('reload');
});
何が起こるかというと、写真は前に付けられますが、既存の写真よりも遅れています。
ページ全体を更新せずに#picsdivを更新/再読み込みする方法があれば、問題はほぼ解決します。私は探し続けるつもりですが、他の誰かがもっと良い方法を知っているのではないかと思います。