什么'当内容用完时,这是结束无限滚动的最有效方法
What's the most efficient way to end an infinite-scroll when running out of content?
我们有一个web应用程序,当我们到达页面底部时,我们会自动加载更多内容,如下所示:
$window
.on('scroll', function () {
var
$this = $(this)
;
if ($this.scrollTop() == $document.height() - $window.height()
&& $('#product-list').hasClass('has-more')) {
// load more content
}
})
我们目前在父元素上使用"has-more"类,当没有更多可用内容时,该类将被删除。
我对这种方法不太满意,知道吗?
与其在没有其他内容的情况下删除类has-more
,并(仍然)在滚动事件中继续检查它的存在,为什么不删除事件处理程序本身呢?
这样,您就没有事件处理程序,也没有决策,直到您再次绑定它,当其他一些ajax事件消息告诉您现在有可用的内容时。
您可以设置&检查作用域中的变量。所以你的例子应该是:
!function() {
var hasMore = true;
$window.on('scroll', function () {
var $this = $(this);
if ($this.scrollTop() == $document.height() - $window.height() && hasMore) {
// load more content & set hasMore to false if applicable
}
})
}();
这里唯一的问题是在页面加载上设置hasMore
。您可以在页脚中写入hasMore
,而不是像我所做的那样(将其放入一个自执行函数中)。这取决于你。
这种方法可以避免将类名重载为布尔值,并可以节省查询DOM的成本(尽管它非常小)。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 结合jQuery和jetpack无限滚动
- 循环结束/推送到数组之前在页面上呈现EJS
- ng应用程序使脚本无限运行
- 在另一个函数成功结束后调用该函数
- 在动画结束之前调用函数
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 使用nunjucks时发生块结束错误
- JavaScript 素数搜索无限递归
- jquery/ajax无限滚动事件
- HTML5获取弧的坐标's结束
- 内容结束时停止无限滚动
- 如何停止在JavaScript中无限克隆表单字段
- 使用jQuery插入HTML页面的第一个项目缺少结束标记
- 什么'当内容用完时,这是结束无限滚动的最有效方法
- 如何在AJAX响应中发出无限滚动结束的信号
- 你如何知道一个无限长的承诺链何时已经完全结束?
- Java脚本递归地添加子节点以无限循环结束
- 无限自动上下滚动,如何控制/配置速度,结束时的暂停时间
- 是否有任何解决方案来结束一个无限循环函数