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
            });            
    });
    

* 更新 *

我现在可以让后续的砌体初始化工作(砌体布局正在工作)。为此,我只需调用 .masonry('destroy') 即可,然后将新的 html 内容发送到 masonry 容器。不知道为什么这使它起作用,因为似乎没有其他人这样做。

4

1 回答 1

3

如果您只是替换容器的内容,而不是容器本身,则必须.masonry('destroy')在再次初始化之前调用。

于 2012-07-24T15:01:45.880 回答