我在开发中使用Twitter Bootstrap和jQuery Masonry作为新网站。我将新元素添加到砌体容器中。jQuery砌体 - 砌体重装后的调用方法
元素既不追加或前置到现有的儿童,而是插在它们之间,根据这样的排序顺序:
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();
}
而且似乎工作 - 而是一个固定的500ms的超时是不是一个真正的美丽解决方案......
那么,有什么建议?
嗯看起来很有趣,但我不知道如何在这种情况下使用它... – 2013-02-08 16:08:28
可以创建你正在试图解决什么的jsfiddle?我猜测.masonry函数是一个延迟对象。所以简单地与.done()绑定可能会工作...但我不知道它是否返回延迟。尝试一下 – Lucas 2013-02-08 16:15:19
不幸的是,这不工作:(也许我只是坚持我的超时500毫秒,它不是*坏,但不美观 – 2013-02-08 19:00:55