无限滚动手动触发回调

时间:2013-07-01 14:02:29

标签: callback jquery-isotope infinite-scroll

我正在使用Infinite Scroll插件(我知道它是未经推荐的http://isotope.metafizzy.co/docs/help.html#infinite_scroll_with_filtering_or_sorting),无限滚动+ Isotipe过滤组合。

现在有时发生在我运行我的过滤器之后,如果我得到一个空列表,我手动触发无限滚动以加载更多元素。

$('.items').isotope({ filter: filter }, function( $items ) {
    var id = this.attr('class'),
    len = $items.length;
    if (len == 0){getElement();}
});

这是我的函数加载元素,但似乎回调不起作用。

function getElement(){
    $('.items').infinitescroll('retrieve',function(items){  
         console.log('callback');
          console.log(items);   
     });
}

不幸的是,无限滚动文档不是最好的手动触发器(它建议一种无法正常工作的方式来调用它 - $(document).trigger('retrieve.infscr');我在这里找到了解决方案:infinite scroll manual trigger)所以我有一点点卡在这里。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我知道这是一个很老的帖子。但是,当我搜索自我问题时,可以在Google上找到它。但是我也找到了解决方案。也许对某人有帮助...

您必须不将回调函数置于主函数中。因为手动功能只能按主要功能。

jQuery(document).ready(function($) {
var $infinitecontainer = $(".infinite-content").infinitescroll({
  navSelector: ".nav-links",
  nextSelector: ".nav-links a:first",
  itemSelector: ".infinite-post",
  errorCallback: function(){ $(".inf-more-but").css("display", "none") }
}, function() { // callback
      alert("Manual click load finished");
});

$(window).unbind(".infscr");
$(".inf-more-but").click(function(e){
    e.preventDefault();
    var infinite_scroll = $(".infinite-content").infinitescroll("retrieve");
    return false;
});