我已经能够非常高兴地将项目附加到 jQuery masonry 以创建“无限滚动”效果。
我天真地认为类似的策略可以在共济会内容之前添加内容。
我这样设置砌体:
$(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>
这就是我将新图片添加到 Masonified “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');
});
发生的情况是图片是预先添加的,但是它们落后于现有图片。
如果在不刷新整个页面的情况下刷新/重新加载#pics div,这几乎可以解决问题。我会继续寻找,但我怀疑其他人可能知道更好的方法。