2011-06-06 81 views
3

我想獲得一個回調函數來執行時jQuery砌體已經完成其定位魔術,防止我的代碼中的未格式化內容的閃光。jQuery砌體回調不起作用

但是,爲了測試的目的,我使用了一個根本不被調用的簡單警報。

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

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

我可能會丟失一些東西很明顯,但任何幫助,將不勝感激

回答

3

回調砌體V2.0都是無證和不完全支持。

但回調是真棒與Isotope v1.5!如果你想要在轉換或動畫結束後觸發適當的回調,Isotope就是要走的路。

原因是你可能使用CSS過渡或jQuery動畫或者都沒有。所以我需要構建所有的邏輯來檢測哪個被使用,然後何時觸發實際的回調。

+0

......哦 ,直到它的加載我現在已經掩蓋砌體的圖像。不理想,但足夠好。謝謝 – Craig 2011-06-08 15:33:22

+1

Desandro,首先感謝一個偉大的插件!目前是否有針對此問題的解決方法?我正在經歷同樣的事情。 – 2011-11-30 02:50:41

+0

@ellenchristine使用[Isotope](http://isotope.metafizzy.co) – desandro 2011-11-30 20:08:24

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

它看起來像砌體工程與jQuery的延期對象系統。如果你正在使用jQuery 1.5+這可能工作:

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

非常感謝你的回答 - 我一直在尋找這行代碼約一個小時在此刻。我希望我可以達到這個x10。乾杯。 – MikeZ 2014-12-13 01:24:29

0

我想這和它的工作

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