InfiniteScroll и пользовательское поведение - PullRequest
3 голосов
/ 10 января 2012

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

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

        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

Ответы [ 3 ]

1 голос
/ 29 ноября 2013

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

Сначала расширьте прототип 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 голосов
/ 09 ноября 2015

Есть нестандартное решение. я использую это

(function($, undefined) {
	$.extend($.infinitescroll.prototype,{
		_setup_loadOffers: function infscr_setup_loadOffers () {
			var opts = this.options,
			instance = this;
			// Bind nextSelector link to retrieve
			$('a.btn-seemore-offers').click(function(e) {
				instance.retrieve();
			});
			
		},
	});
})(jQuery);
$('#container').infinitescroll({behavior: 'loadOffers',})
0 голосов
/ 30 ноября 2012

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

Попробуйте:

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

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...