Перемешать кирпичи в масонстве - PullRequest
11 голосов
/ 15 февраля 2011

возможно ли рандомизировать кирпичи в плагине JQuery Masonry, чтобы при каждой загрузке страницы просматривалось другое расположение?Насколько я могу судить, нет ничего случайного.

Спасибо!

Ответы [ 3 ]

9 голосов
/ 08 апреля 2011

Я нашел ответ на форумах jQuery и немного подправил его для своих нужд.Короче говоря - вы вытаскиваете HTML-биты из своего держателя masonry () и рандомизируете коллекцию, а затем возвращаете ее обратно:

  $(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
    });
  });
2 голосов
/ 14 июня 2012

Я думаю, что более подходящий плагин для вас будет Изотоп , он построен так же, как Masonry (и тем же парнем!), Но имеет встроенные функции сортировки и фильтрации

1 голос
/ 23 марта 2012
(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');
});
...