2015-02-19 2 views
1

Я использую SharePoint. В веб-части мне удается добавить поведение изотопа для набора элементов, которые я получаю через код. Я назвал this link, чтобы почувствовать поведение изотопов.Разбиение на страницы в изотопе

// init Isotope 
    var $container = $('.isotope').isotope({ 
    itemSelector: '.element-item', 
    layoutMode: 'fitRows', 
    filter: function() { 
     return qsRegex ? $(this).text().match(qsRegex) : true; 
    } 
    }); 

Могу ли я узнать, доступен ли нумерация страниц в изотопам

+0

Пагинация не встроена в изотоп. Реализация разбиения на страницы в изотопе создает трудности с изотопной фильтрацией и сортировкой. Хотели бы вы, чтобы все элементы Изотопа были фильтруемыми и сортируемыми с каждой страницы? Или вы хотите, чтобы только элементы на текущей странице были доступны для сортировки? Я думаю, что разбиение на страницы было бы возможно, но сложно с Изотопом, хотя Дэвид Десандро [заявил] (https://github.com/metafizzy/isotope/issues/724), что «Pagination + Filtering - это конфликтующие ментальные модели». –

+0

@TovlyDeutsch Спасибо за ответ. Было бы непонятно пользователям, если существует разбиение на страницы, а при фильтрации пользователей получаются результаты, которые не относятся к текущей странице .... Поэтому я был бы рад фильтровать то, что доступно только на текущей странице, а не на всех. Мне интересно, поддерживают ли другие плагины JQuery модель Isotopes для достижения разбивки на страницы. – Shaamil

+0

Я не знаю, помогает ли это, но [здесь] (http://tannermoushey.com/2012/12/isotope-paging/) является ссылкой на учебное пособие по реализации разбивки на страницы с помощью Isotope v1 и Wordpress. Вы можете использовать общие понятия в учебнике для реализации разбиения на страницы с помощью SharePoint и Isotope v2. –

ответ

1

Вы видели http://codepen.io/Igorxp5/pen/ojJLQE?

$(document).ready(function() { 

    var itemSelector = '.grid-item'; 

    var $container = $('#container').isotope({ 
     itemSelector: itemSelector, 
     masonry: { 
      columnWidth: itemSelector, 
      isFitWidth: true 
     } 
    }); 

    //Ascending order 
    var responsiveIsotope = [ 
     [480, 4], 
     [720, 6] 
    ]; 

    var itemsPerPageDefault = 10; 
    var itemsPerPage = defineItemsPerPage(); 
    var currentNumberPages = 1; 
    var currentPage = 1; 
    var currentFilter = '*'; 
    var filterAtribute = 'data-filter'; 
    var pageAtribute = 'data-page'; 
    var pagerClass = 'isotope-pager'; 

    function changeFilter(selector) { 
     $container.isotope({ 
      filter: selector 
     }); 
    } 


    function goToPage(n) { 
     currentPage = n; 

     var selector = itemSelector; 
      selector += (currentFilter != '*') ? '['+filterAtribute+'="'+currentFilter+'"]' : ''; 
      selector += '['+pageAtribute+'="'+currentPage+'"]'; 

     changeFilter(selector); 
    } 

    function defineItemsPerPage() { 
     var pages = itemsPerPageDefault; 

     for(var i = 0; i < responsiveIsotope.length; i++) { 
      if($(window).width() <= responsiveIsotope[i][0]) { 
       pages = responsiveIsotope[i][1]; 
       break; 
      } 



     } 

     return pages; 
    } 

    function setPagination() { 

     var SettingsPagesOnItems = function(){ 

      var itemsLength = $container.children(itemSelector).length; 

      var pages = Math.ceil(itemsLength/itemsPerPage); 
      var item = 1; 
      var page = 1; 
      var selector = itemSelector; 
       selector += (currentFilter != '*') ? '['+filterAtribute+'="'+currentFilter+'"]' : ''; 

      $container.children(selector).each(function(){ 
       if(item > itemsPerPage) { 
        page++; 
        item = 1; 
       } 
       $(this).attr(pageAtribute, page); 
       item++; 
      }); 

      currentNumberPages = page; 

     }(); 

     var CreatePagers = function() { 

      var $isotopePager = ($('.'+pagerClass).length == 0) ? $('<div class="'+pagerClass+'"></div>') : $('.'+pagerClass); 

      $isotopePager.html(''); 

      for(var i = 0; i < currentNumberPages; i++) { 
       var $pager = $('<a href="javascript:void(0);" class="pager" '+pageAtribute+'="'+(i+1)+'"></a>'); 
        $pager.html(i+1); 

        $pager.click(function(){ 
         var page = $(this).eq(0).attr(pageAtribute); 
         goToPage(page); 
        }); 

       $pager.appendTo($isotopePager); 
      } 

      $container.after($isotopePager); 

     }(); 

    } 

    setPagination(); 
    goToPage(1); 

    //Adicionando Event de Click para as categorias 
    $('.filters a').click(function(){ 
     var filter = $(this).attr(filterAtribute); 
     currentFilter = filter; 

     setPagination(); 
     goToPage(1); 


    }); 

    //Evento Responsivo 
    $(window).resize(function(){ 
     itemsPerPage = defineItemsPerPage(); 
     setPagination(); 
     goToPage(1); 
    }); 
}); 
+2

Могу ли я попросить вас добавить еще какой-нибудь контекст вокруг вашего ответа. Кодовые ответы трудно понять. Это поможет читателю и будущим читателям, если вы сможете добавить дополнительную информацию в свой пост. – RBT

+0

ну, я постараюсь в ближайшее время добавить комментарии к коду –