2012-01-10 1 views
3

Я использую http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/, чтобы обеспечить функциональность infinitescroll, однако настройки по умолчанию для плагина основываются на атрибуте href следующей ссылки для обнаружения текущей страницы и ajaxily загрузки следующего набора результатов.InfiniteScroll и пользовательское поведение

Я уже отслеживаю смещение результатов и их размер в моих собственных объектах javascript и просто хочу, чтобы плагин infinitescroll вызывал функцию window.LoadMore для загрузки следующих результатов, я проверил код плагина, и похоже, что я должен переопределить функцию load.start (специально для началаAjax),

 opts.loading.start = opts.loading.start || function() { 

      $(opts.navSelector).hide(); 
      opts.loading.msg 
       .appendTo(opts.loading.selector) 
       .show(opts.loading.speed, function() { 
        beginAjax(opts); 
      }); 
     }; 

Это правильная функция для переопределения? , и если да, как бы я сделал это из инициализации плагина, приведенный ниже код не будет работать

 ($('.deals-list'), this.el).infinitescroll({ 
      navSelector : "div.navigation", 
      nextSelector : "div.navigation a", 
      itemSelector : ".deal", 
      debug: true, 
      loading.start: function(){ 
       alert('testing'); 
      } 
     }); 

Спасибо.

Yehia

ответ

0

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

Попробуйте это:

($('.deals-list'), this.el).infinitescroll({ 
    navSelector : "div.navigation", 
    nextSelector : "div.navigation a", 
    itemSelector : ".deal", 
    debug: true, 
    loading: { 
     start: function(){ 
      alert('testing'); 
     } 
    } 

}); 
1

Бесконечные прокрутки обеспечивает пользовательские поведения. Чтобы создать новое поведение для решения вашей конкретной проблемы, вам нужно сделать две вещи.

Во-первых, расширить прототип infinitescroll, и определить пользовательские получить метод:

$.extend($.infinitescroll.prototype, { 
    retrieve_custombehavior: function() { 
     $('#nav > a').click(); 
    } 
}); 

уведомление суффиксом метода, _custombehavior. Это будет поведение, которое мы перейдем в бесконечный прокрутки (т. Е. Метод, который он будет искать при определении его действий - в этом случае retrieve_custombehavior).

Во-вторых, передать суффикс поведения в конструктор бесконечного свитка:

$('.deals-list').infinitescroll({ 
    navSelector : "div.navigation", 
    nextSelector : "div.navigation a", 
    itemSelector : ".deal", 
    debug: true, 
    behavior: '_custombehavior' 
}); 

Это приводит к бесконечной прокрутки для запуска пользовательского поведения, когда он достигает конца страницы (и метод извлечения называется)

0

Существует обычное решение. Я использую его

(function($, undefined) { 
 
\t $.extend($.infinitescroll.prototype,{ 
 
\t \t _setup_loadOffers: function infscr_setup_loadOffers() { 
 
\t \t \t var opts = this.options, 
 
\t \t \t instance = this; 
 
\t \t \t // Bind nextSelector link to retrieve 
 
\t \t \t $('a.btn-seemore-offers').click(function(e) { 
 
\t \t \t \t instance.retrieve(); 
 
\t \t \t }); 
 
\t \t \t 
 
\t \t }, 
 
\t }); 
 
})(jQuery); 
 
$('#container').infinitescroll({behavior: 'loadOffers',})

Смежные вопросы