6

因为我有不同的选项卡,砌体不会加载隐藏的项目,所以当我单击一个新选项卡时,图像会相互堆叠,我知道这个问题之前已经被问过,并通过单击选项卡用触发砌体回答,但是如何我会在不弄乱第一个选项卡的情况下这样做。

目前调用砌体与

$(function(){
$('#container').masonry({
// options
itemSelector : '.item',
columnWidth : 260
   });
});`
$(window).load(function(){   $('#container').masonry(); });

与选项卡 2 相同,但 ID 不同 - #container2

标签一完美运行,但标签二堆叠图像,直到您调整浏览器的大小以修复它并正常工作

4

2 回答 2

9

像这样做:

$(function(){
    $('#container').masonry({
        // options
        itemSelector : '.item',
        columnWidth : 260
   });
});

var masonryUpdate = function() {
    setTimeout(function() {
        $('#container').masonry();
    }, 500);
}
$(document).on('click', masonryUpdate);
$(document).ajaxComplete(masonryUpdate);

再也不用担心了!或者,您可以在其他动画之后再次调用它,例如:

$('#something').slideDown(600, masonryUpdate);

即使您不这样做,只需单击页面中的任意位置,砌体就会更新。

于 2014-04-15T13:40:56.683 回答
3

是的,您可以在 onclick 事件上重新加载砌体视图,如下所示:-

$container.masonry('reload');如果对您有用,请使用。就我而言,这是行不通的。我已经使用setTimeout(function(){ $container.masonry() }, 400);. setTimeout在功能中调用砌体。

$(document).ready(function($) {
    var $container = $('#youContainerId');
    $("#TabId").live("click",function(){
        //$container.masonry('reload');
        setTimeout(function(){ $container.masonry() }, 400);
    });
});
于 2013-06-13T06:42:34.790 回答