更改选项并重新初始化

我使用jscroll作为无限滚动寻呼机。

 $j('.frontpage').jscroll({ loadingHtml: '
Loading
', padding: 20, nextSelector: 'div.next a', contentSelector: '.latest-container', autoTrigger: true, autoTriggerUntil: 1 });

这是一个非常简洁的插件,它使用我的项目autoTriggerUntil 。 使用该方法,您可以限制内容自动加载的时间并显示分页的“下一步”按钮。

我想要实现的是这个。

  1. 用无限加载第一组post(实际上是第二页)。 (DONE)
  2. 在第2页之后,显示“全部加载”按钮。 (DONE)
  3. 1和2都工作,但我想要做的是:在第2页上单击“全部加载”后,我想要销毁限制器并返回无限视图直到结束。

我基本上需要以某种方式重新初始化它。 在过去的几个小时里,我一直在弄乱间隔和其他不良做法而没有结果。

在挖掘之后,我推出了这个解决方案: –

首先,你需要添加一个这样的回调函数: –

 $('.frontpage').jscroll({ //your existing settings , callback: function() { if ($('div.next a').is(":visible")) { $('.frontpage').jscroll.destroy(); $('div.next a').off('click'); } } }); 

第二次将onclick属性添加到加载所有标记(仅在加载所有标记的页面中)

 onclick="loadAllClick(event);" 

并且处理函数应该是这样的: –

   

这是一个完全工作的plunker样本希望这能回答你的问题

您可以使用$(el).off()方法和插件的callback选项。

在插件页面http://jscroll.com/上测试。

它看起来像这样:

 var counter = 0; function scrollerCallback(){ counter++; if(counter<2){return;} var el = $j('div.next a'); //Your 'next' selector el.off() el.on('click',function(e){ e.preventDefault(); // we don't want the browser to go to redirect // Add your code to show the rest of the comments here. }); } 

然后以相同的方式调用bind但添加回调:

 $j('.frontpage').jscroll({ loadingHtml: '
Loading
', ... callback:scrollerCallback, autoTriggerUntil: 1 });

在您的CallBack函数中,尝试使用:

 var counter = 0; function scrollerCallback(){ counter++; if(counter<2){return;} var el = $j(document).find('div.next a'); el.on('click',function(e){ e.preventDefault(); console.log("This call gets executed!"); $j('.frontpage').jscroll({ autoTrigger: false, autoTriggerUntil: false }); }); } 

这样做会发生什么? 我想你必须修改库本身才能工作,但我还不太确定......