jquery无限滚动 "reset"

标签 jquery ajax infinite-scroll jquery-infinite-scroll

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

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

1)您进入页面,浏览器会自动定位您并返回您周围的项目列表(例如条形图)...需要无限滚动以避免该列表的分页。一切正常,直到这里......除了我可以到达“无限页面的末尾”并且插件“解除绑定(bind)”本身与滚动的事实。

2) 现在....当您想在输入文本中手动插入地址时,您可以随意执行...您写下您的地址,然后按 Enter...并使用 ajax (没有页面刷新)...我会查找纬度/经度,找到地址,更改无限滚动的导航链接...并且,我感觉很愚蠢,但我无法弄清楚“重新激活”或“重新绑定(bind)”插件到事件的方法...所以我的“新搜索结果”没有新的“无限滚动”实例...

(页面“split”正确并正确返回尝试更改“page=NUMBER”的json)

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

["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"]

“取消绑定(bind)”后,我无法再次绑定(bind)它,因此我的下一个搜索结果会无限滚动........

最佳答案

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

这两行应该能够彻底摧毁无限滚动。

$elem.infinitescroll('destroy');
$elem.data('infinitescroll', null);

//现在无限滚动可以正常重新初始化,而不会因前一个实例而出现任何冲突或问题。

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

关于jquery无限滚动 "reset",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936270/

相关文章:

javascript - 动态更改 Ajax 请求的 url

javascript - TinyMCE 4 - SplitButton 内的自定义 HTML

javascript - Jquery 倒计时器仅在页面上加载一次

jquery - 从 AJAX 的许多页面中序列化独特的表单。适用于 FF/Safari,但 IE 会序列化页面上的所有表单

javascript - 获取当前 div 在视口(viewport)中可见

php - 对从 mysql 数据库返回的每条记录进行单选

javascript - Django:无法触发 AJAX 调用并将值发送回我的表单

php - 如果数据库中存在记录,则填充并锁定下拉列表

javascript - 如何从灯箱画廊内触发无限滚动 - Django/FancyBox/Waypoints.js

javascript - 使用 Infinite Scroll 进行 Isotope v2 过滤 - 过滤器未找到所有项目并且窗口未在过滤器上调整大小