在每个函数中定位 nex div

Posted

技术标签:

【中文标题】在每个函数中定位 nex div【英文标题】:targeting nex div within each function 【发布时间】:2014-01-09 07:18:47 【问题描述】:

我喜欢下面的 html

<div id="mainbar">
    <div class="swrap sliderwrap-1"></div>
    <div class="swrap sliderwrap-2"></div>
    <div class="swrap sliderwrap-3"></div>
    <div class="swrap sliderwrap-4"></div>
</div>

当红色 div 底部偏移量即将变为黑色固定 div 时,我想 隐藏(仅在此处说明),因此我将目标定为当前的下一个 div 偏移量,这样它的底部偏移量就会得到并且当滚动到这个偏移值时,应该隐藏红色 div 框,如果滚动到绿色 div 的底部偏移量,则应该隐藏绿色 div 框。我已经尝试了很多但太困惑了我该怎么办?

jQuery:

$(window).on('scroll',function()
    $('.swrap').each(function()
        var s = $(window).scrollTop();
        var t = $(this).next().offset().top ;
        if(s>t) $(this).hide();
    );
);

demo

但它没有按我的意愿工作。

【问题讨论】:

【参考方案1】:

问题在于,当隐藏 DIV 时,它会发出一个窗口调整大小,这也会发出一个 scrool... 因为行中的下一个 div 将被放置在应该删除它的点之上,所以它被删除了。

查看这个示例,我调整了 DIV 的大小,以便在删除第一个 DIV 时,下一个仍然足够大以保持在非删除区域下方:

Fiddle

.sliderwrap-1
    height: 20%;
    background: #f00;

.sliderwrap-2
    height: 40%;
    background: #0f0;

.sliderwrap-3
    height: 60%;
    background: #ff0;

.sliderwrap-4
    height: 120%;
    background: #f0f;

除此之外,我还认为您错误地计算了应该隐藏 DIV 的点。它仅在下一个 DIV 的顶部离开屏幕时发生,而不是在下一个 DIV 的顶部进入黑色区域下方时发生。

可以做什么?在这里展示它太多了,但我建议在输入代码以隐藏 DIV 之前,请执行以下步骤:

unbind the "on scrool" event 隐藏要隐藏的 DIV reposition the top of the next DIV at the exact same place it was placed before hiding the previous DIV re-bind the "on scrool" event

【讨论】:

以上是关于在每个函数中定位 nex div的主要内容,如果未能解决你的问题,请参考以下文章

删除每个函数中的重复项

映射和传递 onClick 函数作为道具后如何定位特定元素

jQuery:定位 div 的下一个实例

如何向 scrollTop() 函数添加填充

如何使用 JQuery 使用 Ajax 函数更新每个 div 元素

如何用JS 获取DIV的坐标位置?