2

私は開発中の新しいサイトに 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ミリ秒の固定タイムアウトは本当に美しい解決策ではありません...

それで、何か提案はありますか?

4

2 に答える 2

0

ドキュメントがロードされた後、後でそれを行うことができますか?

(function($) {
$(document).ready(documentReadyFunction);
$(window).resize(windowResizeFunction);
$(window).load(windowLoadFunction);
function documentReadyFunction() {
    //your inserted html here
}
function windowResizeFunction() {
    //resize here
}
function windowLoadFunction() {
    //do masonry here
}
})(jQuery);
于 2013-02-22T00:30:21.743 に答える