我是否在每个 ajax 请求中多次启动 jQuery.masonry



我有以下脚本可以工作,但我认为这不是一个好方法:

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

任何建议,或者这是解决此问题的好方法?

如果它有效,你为什么要为此烦恼?我不会。您可以使用 Jquery 模板插件。也许它比刚刚的 DOM 快一点。 查看我的签名以获取砖石示例。

您可以对其进行测试,但不确定它是否适用于砖石插件:

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

最新更新