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初始化移到包含 的函数的外部和上方success,但这似乎试图在创建 s.masonry之前初始化div,所以它不起作用。

有什么建议,或者这是解决这个问题的好方法吗?

4

2 回答 2

0

Why would you bother with that if it works? I wouldn't. You can use Jquery template plugin. Maybe it's a bit faster the just DOM. Look in my signature for an example with masonry.

于 2012-11-22T10:53:38.450 回答
0

你可以测试一下,不确定它是否适用于砌体插件:

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

$('#container').masonry('reload')
于 2012-11-22T10:50:23.247 回答