javascript - Jquery - 向下滚动时将元素包装在 div 中,向上滚动时展开

标签 javascript jquery html css

我已经弄清楚如何使用 jquery 将元素包装在 div 中。 但是,我想在您向下滚动时将其包裹在 div 中,并在您向上滚动时展开它。

可行吗?

我已经想出了将它向下滚动的方法。但我认为逻辑上存在缺陷,因为当我向下滚动时,包装一直在执行。它应该只在我滚动通过 500px 后执行一次。

谢谢!

<script>


$(function() {
//caches a jQuery object containing the header element
var header = $(".show-on-scroll-wrapper");
$(window).scroll(function() {
    var scroll = $(window).scrollTop();

    if (scroll >= 500) {
          $('.mobile-nav-toggle-label').wrapAll('<div id="showOnScrollWrapper" class="show-on-scroll-wrapper show"></div>'); 
        //the wrapping should only happen once 
    } else {
        //needs to be able unwrap the div if I scroll back to the top
    }
});

});

最佳答案

您可以存储对包装对象的引用,并且仅在引用为 null 时才对其进行包装。然后对于其他你可以简单地用它的内容替换引用:

$(function() {
    //caches a jQuery object containing the header element
    var $showOnScrollWrapper = null;
    var header = $(".show-on-scroll-wrapper");
    $(window).scroll(function() {
        var scroll = $(window).scrollTop();
        if (scroll >= 500) {
        if (null === $showOnScroll) {
            $showOnScrollWrapper = $('<div id="showOnScrollWrapper" class="show-on-scroll-wrapper show"></div>');
            $('.mobile-nav-toggle-label').wrapAll($showOnScrollWrapper); 
        }
    } else if ($showOnScrollWrapper !== null) {
        $showOnScrollWrapper.replaceWith($showOnScrollWrapper.html());
        $showOnScrollWrapper = null;
    }
});

关于javascript - Jquery - 向下滚动时将元素包装在 div 中,向上滚动时展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777492/

相关文章:

jquery - 如何根据包含的div的大小设置图像的大小?

javascript - 控制台原型(prototype)结构

javascript - Angular2 嵌套 formGroups - formArrays 和模板绑定(bind)

javascript - ajax 不再工作后 jquery select2

javascript - Yii2 动态表单中的自定义字段

javascript - Jquery 悬停时输出链接的 alt

javascript - jQuery 数据给我 undefined

javascript - 在不中断滚动的情况下将 div 添加到部分

javascript - 交换div在某个索引处的位置

html - 在 HTML/CSS 中单击时如何删除目标中的样式