我使用 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 毫秒超时并不是一个真正漂亮的解决方案......
那么,有什么建议吗?
最佳答案
我猜您已经在使用 jQuery。或许使用deferred对象可能会有用。
关于javascript - jQuery 砌体 - 砌体重新加载后调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773625/