2012-08-23 114 views
7

我隱藏了li並隱藏它之後,在html中留下了一個空白,我想重新加載masonry並重新排列 的內容。我嘗試.masonry('重新加載'),但我沒有工作。任何幫助使用jquery masonry隱藏元素後重組所有元素

小提琴 http://jsfiddle.net/emtBX/1/

JS

$(document).ready(function(){ 
       $('#container').masonry({ 
       // options 
       itemSelector : '.item', 
       columnWidth : 240, 

       isAnimated: true, 
        animationOptions: { 
        duration: 750, 
        easing: 'linear', 
        queue: false 
        } 
       }); 

       $('#butn1').click(function() { 

        $('#container ul li').eq(2).hide(); 
        $('#container').masonry('reload'); 

       }); 
      }); 
+0

好像砌體要你完全刪除的項目:http://jsfiddle.net/emtBX/2/ – Blender

回答

8

您可以隱藏鋰元素並刪除.item類重新排序元素,http://jsfiddle.net/emtBX/11/

$('#container ul li').eq(2) 
    .css({'visibility': 'hidden', 'display': 'none'}) 
    .removeClass("item masonry-brick"); 
+0

謝謝回答。有沒有辦法以有組織的方式顯示隱藏的元素? – user1184100

+0

只需添加.item類並再次顯示元素。 http://jsfiddle.net/emtBX/15/ – anderssonola

+0

謝謝你的工作正常 – user1184100

3

jQuery的砌體本身有一種叫做「隱藏」的方法(http://masonry.desandro.com/methods.html#hide

這樣使用它:

$('#container').masonry('hide', $('#container ul li').eq(2)).masonry(); 

最後磚石()調用你想要做什麼:「刷新」地磚

+0

截至2017年5月,這已不再是一件事了。在文檔上沒有引用這個方法: –

0

要回答劉易斯的評論和人民尋找v3的解決方案提供了答案,在V3隱藏方法不再存在,你只需要使用jQuery的hide()方法,並在觸發砌體佈局後。 所以想法是hidding元素:

$('.something-to-hide').each(function(){ 
    $(this).hide(); 
}); 
$('.grid').masonry('layout'); //we assume grid is your class use to masonry container. 

然後顯示後面的隱藏要素:

$('.class-for-all-elements').show() 
$('.grid').masonry('layout'); 

在我來說,我加做一些搜索前,隱瞞,這就是爲什麼我使用的每一個( )功能。

斯特凡