布局初始化时的砌体脚本事件

时间:2013-12-12 13:38:54

标签: jquery-masonry

每当Masonry脚本重新组织元素时,例如在调整窗口大小时,如何执行我的函数? 在这个例子中,它只是第一次工作。

$(document).ready(function()
{
    $('#container').masonry({
     // layoutComplete: masonry_refreshed(), // <-- doesn't work propriety
        itemSelector: '.item'
    });

    masonry_refreshed();
});

function masonry_refreshed()
{
    alert('Masonry refreshed')
}

DEMO:http://codepen.io/anon/pen/HeuKw

2 个答案:

答案 0 :(得分:4)

检查:http://masonry.desandro.com/events.html 你可以使用以下砌体事件:

msnry.on( 'layoutComplete', masonry_refreshed );

请注意,msnry是您定义砌体的变量的名称。


修改 完整的演示代码:

$(document).ready(function(){
    var container = document.querySelector('#container');
    var msnry = new Masonry(container,{
        itemSelector: '.item',
        columnWidth: 70
    });

    msnry.on( 'layoutComplete', masonry_refresh );

    function masonry_refresh(){
        console.log("Masonry resized!");
    }

});

演示:http://jsfiddle.net/Cd6ce/1/


EDIT2:如果你真的想以jQuery的方式使用它:

$(document).ready(function(){
    $('#container').masonry({
        itemSelector: '.item',
        columnWidth: 70
    });
    var msnry = $('#container').data('masonry');
    msnry.on( 'layoutComplete', masonry_refresh );

    function masonry_refresh(){
        console.log("Masonry resized!");
    }

});

演示:http://jsfiddle.net/Cd6ce/4/

答案 1 :(得分:2)

您必须停用&#39; layout&#39;在初始化。请参阅:http://masonry.desandro.com/options.html

msnry = new Masonry( self.el, {
    isInitLayout: false,
    itemSelector: '.brick'
});

msnry.on( 'layoutComplete', function(){
    console.log('completed');
});

msnry.layout();