每当Masonry脚本重新组织元素时,例如在调整窗口大小时,如何执行我的函数? 在这个例子中,它只是第一次工作。
$(document).ready(function()
{
$('#container').masonry({
// layoutComplete: masonry_refreshed(), // <-- doesn't work propriety
itemSelector: '.item'
});
masonry_refreshed();
});
function masonry_refreshed()
{
alert('Masonry refreshed')
}
答案 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!");
}
});
答案 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();