2

私は(インターネット上の他のコメントに基づいて)起こってはならないと私が信じている何かを経験しています。

基本的に、初めてmasonry()を呼び出すときは、レイアウトは問題ありません。

しかし、新しいhtmlコンテンツ(石積みコンテナ用)を再送信してから、masonry()を使用して再度初期化すると、レイアウトが壊れます(グリッドレイアウトだけですが、アイテム間のすべてのスペースが埋められません)。

IE8では、実際にデバッガーを介してjquery.masonryエラーが発生します。

  • 私は根本的に間違ったことをしていますか?
  • これを行うためのより良い方法はありますか?

    var $container = $('#container');
    
    // emit photos.
    $container.html(content.join(''));
    
    // initiate masonry.
    $container.imagesLoaded(function() {
        $container.masonry({ // <<------------ this is where is crashed on subsequent attempts.
                itemSelector: '.item',
                isAnimated: true,
                isFitWidth: true
            });            
    });
    

* アップデート *

これで、後続の組積造の初期化を機能させることができます(組積造のレイアウトが機能しています)。これを行うには、新しいhtmlコンテンツを石積みコンテナに出力する前に.masonry('destroy')を呼び出すだけです。他の誰もこれを行っていないように見えるので、なぜこれが機能するのかわかりません。

4

1 に答える 1

3

コンテナ自体ではなく、コンテナの内容を置き換えるだけの場合は、.masonry('destroy')再度初期化する前に呼び出す必要があります。

于 2012-07-24T15:01:45.880 に答える