我使用 Twitter Bootstrap 和 jQuery Masonry 开发一个新网站。我将新元素附加到砖石容器中。
这些元素既不附加也不附加到现有子元素,而是插入它们之间,具体取决于如下排序顺序:
var elem = $(boxes[rand2]);
$(".post").each(function(i){
if(parseFloat($(this).data("weight"))<=weight){
elem.insertBefore(this);
return false;
}
else if (i == $(".post").length - 1) {
elem.insertAfter(this);
return false;
}
});
到目前为止,这很完美。我想要实现的是元素仅在到达目的地时才显示。我不想禁用动画,但新元素的空间应该出现(空),只有当所有东西都通过砖石重新排列时,新元素才会出现。
我认为在重新加载后会触发一个回调操作,如下所示:
$('#posts').masonry('reload',function(){
alert('re-aligning finished');
});
但这不起作用,它会提前触发。
所以暂时,我做到了
$('#posts').masonry('reload',function(){
window.setTimeout(showElem,500);
});
function showPosts(){
$('.post').show();
}
这似乎可行 - 但固定的 500 毫秒超时并不是一个真正漂亮的解决方案......
那么,有什么建议吗?