我将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/

10-13 01:05