如何在点击时触发/重新加载Masonry插件

use*_*448 5 tabs triggers reload jquery-masonry

因为我有不同的标签,砌体不加载隐藏的项目,所以当我点击新标签时图像堆叠在一起,我知道之前已经问过这个问题并通过单击标签回答触发器砌体,但是如何我这样做而不会弄乱第一个标签.

目前称为砖石砌筑

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

对于标签2也是如此,但具有不同的ID - #container2

选项卡一个完美地工作,但选项卡二堆叠图像,直到您调整浏览器的大小,修复它并正常工作

Ped*_*ira 9

像这样做:

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

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

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

$('#something').slideDown(600, masonryUpdate);
Run Code Online (Sandbox Code Playgroud)

即使您不这样做,只需单击页面中的任何位置即可更新砌体.


Roo*_*dra 4

是的,您可以在 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);
    });
});
Run Code Online (Sandbox Code Playgroud)