0

ajax 呼び出しで jQuery Masonry プラグインを使用すると問題が発生します。

サーバーからかなり標準的なhtmlコンテンツを取得するフィルター関数があります(div、画像なし):

var searchResults   = $('div#results');

function filter() {

    var text        = 'text';
    var orderby     = 'order';
    var source      = 'source';
    var media       = 'media';
    var format      = 'format';
    var tags        = 'tags';

    var fetchUrl    = '/search/results/ ' + text + '/' + orderby + '/' + source + '/' + media + '/' + format + '/' + tags;


    $.ajax({
            type: "POST",
            url: fetchUrl,
            cache: false,
            data: "after=000000",
            success: function(data){ 

                searchResults.html(data);

                $('#results').masonry({
                  columnWidth: 360, 
                  itemSelector: '.related' 
                });
            }
        });

}

これは、ページの読み込み時に次のように呼び出されます。

if (searchResults.length > 0) {

    filter();

}   

これはすべて期待どおりに機能しています。ただし、クリックして呼び出してみるとfilter()、コンテンツは正常に取得されますが、石積みはフォーマットされていません。

$('nav#view-types a#grid, nav#view-types a#list').click(function() {

    filter();

    return false;

});

私は Ajax の成功関数で masonry を呼び出しており、最初の実行で機能しているため、問題が何であるかは実際にはわかりません...誰かアイデアがありましたか?

ありがとう!

ジェームズ

4

2 に答える 2

1

アイテムを追加した後、 $('#results').masonry('reload') を呼び出す必要があります。

于 2011-09-10T20:30:55.307 に答える