2011-02-15 68 views
11

是否可以在JQuery插件砌體中隨機化磚塊,以便每次頁面加載時都可以查看不同的排列方式?據我所知,沒有任何選擇。在砌體中隨機化磚塊

謝謝!

回答

9

我在jQuery論壇上找到了一個答案,我調整了一下我的需求。總之 - 你拉HTML位的磚石()倉內,你隨機的集合,然後你把它放回去:

$(document).ready(function(){ 
    var ar = $('#masonry').children(); 
    ar.sort(function(a,b){ 
     // Get a random number between 0 and 10 
     var temp = parseInt(Math.random()*10); 
     // Get 1 or 0, whether temp is odd or even 
     var isOddOrEven = temp%2; 
     // Get +1 or -1, whether temp greater or smaller than 5 
     var isPosOrNeg = temp>5 ? 1 : -1; 
     // Return -1, 0, or +1 
     return(isOddOrEven*isPosOrNeg); 
    }); 
    $('#masonry').html(ar); 
    $('#masonry').masonry({ 
     columnWidth:220, 
     animate: true 
    }); 
    }); 
+0

我似乎無法得到這個工作 - 這是否取代砌體腳本在HTML - 是#masonry容器和.children在div上的類? – mark 2011-06-08 22:59:17

+0

我不認爲這可以工作,因爲砌體的性質。 – Bytemain 2011-11-30 03:37:45

1
(function($) { 

$.fn.randomize = function(childElem) { 
    return this.each(function() { 
     var $this = $(this); 
     var elems = $this.children(childElem); 

     elems.sort(function() { return (Math.round(Math.random())-0.5); }); 

     $this.remove(childElem); 

     for(var i=0; i < elems.length; i++) 
     $this.append(elems[i]);  

    });  
} 
})(jQuery); 


$(window).load(function(){ 
    $(masonry-container).randomize(masonry-brick).masonry('reload'); 
}); 
2

我想你會Isotope,它是建立在一個更加合適的插件與砌體相同的方式(並由同一個人!),但具有內置的排序和過濾功能