将jquery-ias与异步加载的内容一起使用

时间:2014-04-27 23:46:51

标签: jquery-ias

我有点成功地将jQuery Infinite Ajax Scroll插件集成到my development site中 - 它使用了两次,首先在左侧的线程列表中,第二次是在你加载一个单独的主题时 - 但我有这里有第二个ias实例的问题。

基本上,主题的内容通过$ .get加载,然后呈现到页面中,然后我在JS中触发setupThreadDetailDownwardScroll(),创建一个ias的实例:

var iasDetail = jQuery.ias({
    container:  "#reply-holder",
    item:       ".post",
    pagination: ".threaddetail-pagination",
    next:       ".load-next-inner-link a",
    delay:      2000,
  });

  if (iasDetail.extension) {
    iasDetail.extension(new IASPagingExtension());
    iasDetail.extension(new IASTriggerExtension({
      text: 'More Replies', 
      html: '<div class="scroll-pager"><span>{text}</span></div>',
      offset: 10,
    }));
    iasDetail.extension(new IASNoneLeftExtension({html: '<div class="scroll-message"><span>No more replies</span></div>'}));
    iasDetail.extension(new IASHistoryExtension({
        prev: '.load-previous-inner-link a',
    }));
  }

  iasDetail.on('load', function() {
    $('#reply-holder').append(scrollLoading);
  })

  iasDetail.on('rendered', function() {
    $('.scroll-loading').remove();
    iasDetail.unbind();
  })

但问题是这只适用于您加载的第一个主题 - 您将在第一个线程中进行分页,但是当您打开下一个线程时它将回退到锚定链接。

所以我想在插入新内容后我需要重新绑定ias,这就是为什么我在unbind()添加了rendered来电,然后我重新调用{{1}每当加载另一个线程时。但这不起作用。

这里有正确的程序吗?

1 个答案:

答案 0 :(得分:0)

您正在使用jQuery.ias(...)绑定到$(window)的滚动事件。在你的情况下,你可能想绑定到溢出div。因此你应该像这样指定scrollContainer:

$('#scrollContainer').ias(...)

修改

根据你的评论,我再看了一遍,可能找到了答案。当您致电jQuery.ias({...});时,IAS会设置并等待$(document).ready初始化。您说您想在setupThreadDetailDownwardScroll函数中初始化IAS。您可以尝试使用以下代码自行初始化IAS

 iasDetail.initialize();