【问题标题】:Infinite Scroll: show elements between a range无限滚动:显示范围之间的元素
【发布时间】:2015-06-18 02:23:45
【问题描述】:

在我的页面上,我有 16 个元素。最初只有 4 个显示,其余 5-16 个隐藏在页面上。在页面加载时,我使用 :gt 选择器隐藏设置为 4 的“每页帖子”编号之外的所有内容。

this.ppp    = 4;
this.count  = this.ppp - 1;
$('li.item:gt(' + this.count + ')').addClass('hide');

当我发起一个无限滚动事件时,通过滚动到页面底部,我怎样才能找到范围 5-8 之间的所有元素,然后在下一个事件中找到 9-12 之间的元素,依此类推在我的帖子每页价值上。

我尝试使用 .nextUntil() 和 :eq 但使用 :eq 方法会返回一个对象,而 nextUntil() 需要一个类似 'li.item' 的字符串。

this.count += this.ppp;
var eq = $("ul.items li.item").eq(this.count);
$('ul.items).nextUntil(' + eq  + ')').addClass('show');

可能是一种更好更有效的方法来解决这个问题,只是寻找一些想法。

谢谢

【问题讨论】:

    标签: jquery range infinite-scroll


    【解决方案1】:

    要显示隐藏items,最好使用这个:

    $('li.item.hide:lt(' + this.ppp + ')').removeClass('hide');
    

    取而代之的是:

    this.count += this.ppp;
    var eq = $("ul.items li.item").eq(this.count);
    $('ul.items).nextUntil(' + eq  + ')').addClass('show');
    

    检查这个最小的例子:https://jsfiddle.net/lmgonzalves/q9oh7eb9/

    【讨论】:

    • 我确实试过了,而且效果很好。使用 :lt less than 的问题是,它考虑了所有小于“this.count”当前值的项目,所以除了下一组项目外,我最初的 4 个项目会被动画化。这就是为什么我在我的问题中指定了一系列项目。关于如何定位范围内的项目的任何想法。感谢您的努力。
    • 我用这个更新我的答案:$('li.item.hide:lt(' + this.ppp + ')').removeClass('hide');。它如何为您工作?请注意,我只选择了类 .hideitem 元素,因此第一个项目不应设置动画。
    • +1 哦,这很聪明。我很抱歉,我应该在我的代码中更加具体,因为它抛弃了我真正的目标。如果我的动画更复杂,或者我没有添加/删除类,而是使用 TweenLite 在项目中设置动画,我认为我仍然需要在一个范围之间选择项目集合。仍在尝试完成您的示例,看看我是否可以将它用于我的实际目的。
    • 看起来不错,但您总是可以分享更多代码,然后我们可以为您提供更多帮助;)
    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多