jQuery Masonry回调无法正常工作

我正在尝试获得一个回调函数,以便在jQuery Masonry完成定位魔术时执行,防止代码中出现无格式内容。

但是,为了测试,我使用的是一个根本没有调用的简单警报。

var $jigsaw = $('#jigsaw'); $jigsaw.imagesLoaded( function(){ $jigsaw.masonry({ columnWidth : 180, isAnimated : !Modernizr.csstransitions, isResizable : true, itemSelector : '.piece' }, function(){ alert('Completed'); }); }); 

我可能会遗漏一些明显的东西,但任何帮助都会受到赞赏

使用Masonry v2.0的回调没有记录,也不完全支持。

但Isotope v1.5的回调非常棒! 如果你想要在转换或动画结束后触发正确的回调,那么同位素就是你的选择。

原因是你可能正在使用CSS过渡或jQuery动画或两者都没有。 所以我需要构建所有逻辑来检测正在使用哪一个,然后何时触发实际的回调。

看起来Masonry可以使用jQuery的延迟对象系统。 如果您正在使用jQuery 1.5+,这可能会起作用:

 $.when($jigsaw.masonry(options)).then(function(){/*callback function*/}); 
 // Create the callback function var callback = function($el, cb) { var instance = $.data($el, 'masonry'); if (!instance) { setTimeout(callback($el, cb), 300); } else { cb(); } } // Then simply add this to your imagesLoaded for an element of '.thumbnails' or something callback('.thumbnails', function() { // some code goes here }); 

我尝试了这个并且它有效

 jQuery.when( $jigsaw.masonry('reload') ).done(function(x) { //call back logic });