我在開發中使用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