jQuery Masonry回调无法正常工作

时间:2011-06-06 12:00:07

标签: jquery callback jquery-callback jquery-masonry fouc

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

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

var $jigsaw = $('#jigsaw');

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

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

4 个答案:

答案 0 :(得分:14)

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

$.when($jigsaw.masonry(options)).then(function(){/*callback function*/});

答案 1 :(得分:3)

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

但回调很棒Isotope v1.5!如果你想要在转换或动画结束后触发正确的回调,可以选择同位素。

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

答案 2 :(得分:1)

// 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
});

答案 3 :(得分:0)

我试过这个并且有效

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