jquery无限滚动"重置"

ric*_*cit 13 ajax jquery infinite-scroll jquery-infinite-scroll

我正在为网站使用无限滚动jquery插件(https://github.com/paulirish/infinite-scroll)

一切都很好,除了我的页面是一个搜索所以......发生的是:

1)你进入页面,浏览器自动定位你并返回你周围的项目列表(例如条形图)...需要无限滚动以避免对此列表进行分页.一切都有效,直到这里...除了我可以到达"无限页末尾"并且插件从滚动中"解除绑定"的事实.

2)现在....当你想在输入文本中手动插入一个地址时,你可以自由地做...你写下你的地址,然后按下输入...和ajax(没有页面刷新).. .i会寻找lat/lon,找到地址,更改无限滚动的导航链接....而且,我觉得愚蠢,但我无法想出一种方法来"重新激活"或"重新绑定"活动的插件......所以我的"新搜索结果"没有一个新的"无限卷轴"实例......

(页面"拆分"正确并正确返回json尝试更改"page = NUM​​BER")

这是控制台中发生的事情:

["math:", 0, 468]
jquery.infinitescroll.min.js:20["heading into ajax", 
Array[2]
    0 : "/ajax/getCoworkings/?page="
    1 : "&latitude=52.5234051&longitude=13.4113999&distance=12"
    length : 2
    __proto__ : Array[0]
]
jquery.infinitescroll.min.js:20["Using JSON via $.ajax() method"]
jquery.infinitescroll.min.js:20["Error", "end"]
jquery.infinitescroll.min.js:20["Binding", "unbind"]
Run Code Online (Sandbox Code Playgroud)

在"unbind"之后,我无法再绑定它,因此在我的下一个搜索结果中有无限滚动........

fis*_*920 27

infinitescroll将所有实例数据存储在元素本身$.data,因此删除该实例数据是完全重置infinitescroll的唯一可靠方法.

这两行应该可以完全摧毁infinitescroll.

$elem.infinitescroll('destroy');
$elem.data('infinitescroll', null);
Run Code Online (Sandbox Code Playgroud)

//现在无限滚动可以正常重新初始化,而不会在前一个实例中出现任何冲突或残骸.

请注意,截至2012年6月,以前的答案都不适用于我最新版本的jquery.infinitescroll(v2.0)

  • 我也在使用v2,这是唯一对我有用的解决方案. (5认同)
  • 对于在2019年阅读此书的其他人。当我使用`$ elem.infiniteScroll('destroy');`和`$ elem.data('infiniteScroll',null);`时,这仅对v3.0.5有用。区分大小写。 (2认同)

ric*_*cit 5

解决了。

我已经添加:

if (xhr == 'destroy') {
    $.removeData(this.element[0]);
}
Run Code Online (Sandbox Code Playgroud)

在功能上

_error: function infscr_error(xhr) {
Run Code Online (Sandbox Code Playgroud)

在228行。

可能这不是最好的方法,但这正是我所需要的。

而我现在所做的基本上是您的建议:

1。

$("#myelement").infinitescroll("destroy");
Run Code Online (Sandbox Code Playgroud)

2。

$("#myelement").infinitescroll(WHATEVER_SETTINGS);
Run Code Online (Sandbox Code Playgroud)

...无需修改“ pathParse”值,
但这是因为我
之前使用jQuery 修改了选择器(next / nav)。