9

liを非表示にしていますが、非表示にした後、htmlにギャップが残っているので、石積みをリロードしてコンテンツを再配置したいと思います。.masonry('reload')を試しましたが、機能しませんでした。ヘルプ

フィドル 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');

              });
            });
4

3 に答える 3

9

li要素を非表示にし、.itemクラスを削除して、要素を並べ替えることができます。http: //jsfiddle.net/emtBX/11/

$('#container ul li').eq(2)
    .css({'visibility': 'hidden', 'display': 'none'})
    .removeClass("item masonry-brick");
于 2012-08-23T07:56:06.793 に答える
4

ルイスのコメントに答え、v3で解決策を探している人々に答えを提供するには、v3ではhideメソッドが存在しなくなり、jqueryのhide()メソッドを使用し、石積みレイアウトをトリガーした後です。したがって、アイデアは要素を隠すためのものです:

$('.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');

私の場合、非表示にする前に検索を行うために追加しました。そのため、each()関数を使用しました。

ステファン

于 2018-02-06T13:22:55.320 に答える
3

jquery masonry自体には、「hide」と呼ばれるメソッドがあります(http://masonry.desandro.com/methods.html#hide

次のように使用します。

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

最後のmasonry()呼び出しは、必要な処理を実行します。タイルを「リロード」します。

于 2013-06-12T13:42:00.657 に答える