在AJAX调用后重置/禁用无限滚动

时间:2013-12-05 15:51:40

标签: jquery ajax infinite-scroll jquery-ias

我正在使用无限-ajax-scroll (https://github.com/webcreate/infinite-ajax-scroll)插件带过滤。我有过滤器使用无限滚动但我的问题是,每当滚动得到一个过滤器的结果的结束它将不再滚动,即使选择了另一个过滤器。因此,我需要在选择过滤器时重置infinate滚动但我在文档中找不到如何重置这个并且对JQuery不太好,所以无法解决这个问题。

我还有一些不需要iniliniate滚动的过滤器,还需要一种方法来禁用它们。

$('.filter a').click(function() {
    //reset scroll somehow
    //setTimeout("jQuery.ias({container: '#container'})",1000);
    var $this = $(this);
    var URL = $this.attr('href');
    loadMoreItems(URL, $this);
});
return false;
});

jQuery.ias({
    container: '#container', // main container where data goes to append
    item: '.element', // single items
    pagination: '.paginate', // page navigation
    next: '.paginate a', // next page selector
    loader: '<img src="public/img/ajax-loader.gif"/>', 
    noneleft: 'No more discounts for your selection', 
    triggerPageThreshold: '10', 
    trigger: "Load more items",
    history: false, 
    thresholdMargin: -350
});

3 个答案:

答案 0 :(得分:4)

其他have had the same issue as you;根据作者的说法,目前无法彻底重新初始化IAS。

所以你的选择似乎是

1)按removing the event handlers硬重置插件,并在每次更改过滤器时再次调用jQuery.ias({...})

2)切换到另一个库。该错误报告wrote his own中的用户 - 也许他的解决方案对您有用

答案 1 :(得分:2)

就像janfoeh所说,没有什么可以正确地重新初始化插件。你应该从窗口取消绑定滚动并再次调用元素上的init。

我建议你将初始化包装成一个函数,以便重新初始化。

$('.filter a').click(function() {
    $(window).unbind('scroll');
    initscroll();
});

function initscroll(){
    jQuery.ias({
        container: '#container', // main container where data goes to append
        item: '.element', // single items
        pagination: '.paginate', // page navigation
        next: '.paginate a', // next page selector
        loader: '<img src="public/img/ajax-loader.gif"/>', 
        noneleft: 'No more discounts for your selection', 
        triggerPageThreshold: '10', 
        trigger: "Load more items",
        history: false, 
       thresholdMargin: -350
    });
}
initscroll();

所以你必须在加载和过滤时调用initscroll。

答案 2 :(得分:2)

无限Ajax Scroll 版本2开始,有一种新方法可以解决此类问题。调用新方法 destroy() unbind()的别名,您将从任何窗口或文档事件中取消绑定IAS。之后你可以重新绑定IAS对象。

$('.filter a').click(function() {
    setTimeout(function() { 
      ias.destroy(); 
    }, 1000);

    var $this = $(this);
    var URL = $this.attr('href');
    loadMoreItems(URL, $this);

    ias.bind();
});  

类似的东西,没有测试。您可以在http://infiniteajaxscroll.com/docs/methods.html

上查看此方法