2011-07-01 10 views
6

1000px geniş div ile sarılmış duvar öğeleri var, jQuery's addClass() kullanarak div 2000x yeniden boyutlandırmak için bir düğme var, sorun, Masonry fazladan 1000px alanı doldurmak için öğeleri yeniden eşleştirmez Yeniden boyutlandırmanın çalıştığını biliyorum çünkü tarayıcı penceresini yeniden boyutlandırmak bir değişiklik yapılmasına neden oluyor.Duvar Eklentisi: Yeniden boyutlandırmak için yeniden boyutlandırma

Duvar:

$(function(){ 
    $('#container').masonry({ 
     // options 
     itemSelector : '.item', 
     columnWidth : 240 
    }); 
}); 

Düğme:

$("a.button").toggle(function(){ 
    $(this).addClass("flip"); 
    $("div#container").fadeOut("fast", function() { 
     $(this).fadeIn("fast").addClass("resize"); 
    }); 

CSS:.

width: 1000px; /* default */ 
width: 2000px !important; /* on button press */ 

I ('a') çalıştıran çalıştı cl Aynı düğmeyi kullanarak Yığın işlevi üzerinde çalışıyorum ve normal çalışıyor gibi görünüyor ama sorun hala var.

Herhangi bir öneri? Stumped:/

cevap

10

Yeniden boyut düğmesine tıklandığında duvarcılık fonksiyonunu çalıştırmanız gerektiğine inanıyorum. itemSelector maç ve tuğla yeniden konumlandırmak (muhtemelen yeni) öğeleri çekecek .masonry('reloadItems') arayarak ancak .masonry() sadece kendi ürünlerinin en yeni boyutlar temelinde öğeleri yeniden konumlandırmak olacaktır çağıran http://masonry.desandro.com/methods.html#reloaditems itibaren

$("a.button").toggle(function(){ 
    $(this).addClass("flip"); 
    $("div#container").fadeOut("fast", function() { 
    $(this).fadeIn("fast").addClass("resize"); 
    // run masonry again 
    $('#container').masonry({  
     itemSelector : '.item', 
     columnWidth : 240 
    }); 
}); 
+0

Aklında bir yöntem var mı? Düğme tıklatıldığında varsayılan Masonry işlevini çalıştırdım, ancak sorun hala var, tarayıcı penceresini yeniden boyutlandırmadıkça, yeniden boyutlandırma öncesinde neye benzediğini sadece miras alıyor. :/ – Naota

+0

Bir çekicilik gibi çalıştım, çok teşekkürler! :) – Naota

+5

ayrıca $ ("# container |) .masonry (" yeniden yükle "); bu –

-2

deneyin jquery ile yeniden boyutlandırma olayı tetikleme:

$(window).trigger('resize'); 

Benim için çalıştı!

+1

Bu, tarayıcı işlevine neden olabileceğinden yeniden yükleme işlevselliğini tetiklemenin gerçekten zayıf bir yoludur. Yeniden boyutlandırmak ve diğer yeniden boyutlandırma dinleyicilerini yeniden oluşturmaya gerek yok. Yeniden boyutlandırmaya çalıştığınız için duvardaki yeniden boyutlandırma dinleyicisi devre dışı bırakılabilir. – Soviut