0

私は動作する次のスクリプトを持っていますが、それを行うのに良い方法ではないと思います:

success: function( widget_shell ) 
{ 

    if( widget_shell.d[0] ) {

        $( "#container" ).empty();

        var i = 0;

        for ( i = 0; i <= widget_shell.d.length - 1; i++ ) {

            var j = Math.floor(Math.random() * 200) + 50

            var $widget = $( "<div class='item col1' style='height:" + j + "px'></div>" ).appendTo( $( "#container" ) );
            $( "<span>" + widget_shell.d[i].widget_id + " - " + j + "</span>" ).appendTo( $widget );

        }

        $('#container').masonry({
            itemSelector : '.item',
            columnWidth: 240
        });

        $('#container').masonry('reload')

    }

}

私の主な関心事はその.masonry部分です。success何度も発生するように、つまりajaxリクエストごとに、上記のコードは毎回再起動してからリロードしていると思います.masonry

.masonryを含む関数の外側と上にイニシエーションを移動しようとしましたが、sが作成される前successに初期化しようとしているようで、機能しません。.masonrydiv

何か提案がありますか、それともこれはこの問題を解決するための良い方法ですか?

4

2 に答える 2

0

あなたはそれをテストすることができますが、それが石積みプラグインで機能するかどうかはわかりません:

if($().masonry == 'undefined')
$('#container').masonry({
            itemSelector : '.item',
            columnWidth: 240
        });

$('#container').masonry('reload')
于 2012-11-22T10:50:23.247 に答える
0

それがうまくいくなら、なぜあなたはそれを気にするのですか?私はしません。Jqueryテンプレートプラグインを使用できます。多分それはちょうどDOMより少し速いです。石積みの例については、私の署名を見てください。

于 2012-11-22T10:53:38.450 に答える