jquery - 遍历父级并使用 ($this) 转到其所有子元素

标签 jquery html css

我想使用 Jquery 根据用户滚动的距离在我的 anchor 链接上添加类。我能够添加类,但不会使用 removeClass 将其删除。我确定问题是我在 jquery 中使用的选择器。我是否需要向后遍历并从父元素添加特定选择器,而不是直接在我的 anchor 链接上分配 removeClass

我不想将类添加到列表元素,而是将类应用到 anchor 链接本身,这是我个人的选择。

HTML

<ul>
    <li><a class="scroll" href="#first">About Me</a></li>
    <li><a class="scroll" href="#second">Portfolio</a></li>
    <li><a class="scroll" href="#third">Contact</a></li>
</ul>

<div class="home" style="height:1000px; background-color:red;"></div>
<div class="about-me" id="first" style="height:1000px; background-color:green;"></div>
<div class="portfolio" id="second" style="height:1000px; background-color:blue;"></div>
<div class="contact" id="third" style="height:1000px; background-color:orange;"></div>

CSS

 .active {
  color:gray;
  }

JQUERY

$(document).ready(function(){
var scrollLink = $('.scroll');

scrollLink.click(function(event){
    event.preventDefault();
    $('body,html').animate({
        scrollTop: $(this.hash).offset().top
    }, 1000)
})

$(window).scroll(function(){
    var scrollLoc = $(this).scrollTop();

    scrollLink.each(function(){

        var traverse = $(this.hash).offset().top - 20;

        if (traverse <= scrollLoc){
            $(this).addClass('active');
            $(this).removeClass('active');
        }
    })
})

})  

我希望来自其他 anchor 链接的类在未显示在屏幕上时会被删除。

最佳答案

我想你可能想更改以下代码

if (traverse <= scrollLoc){
   $(this).addClass('active');
    $(this).removeClass('active');
}

像这样:

if (traverse <= scrollLoc){
   $(this).addClass('active');
} else { 
    $(this).removeClass('active');
}

关于jquery - 遍历父级并使用 ($this) 转到其所有子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54144682/

相关文章:

javascript - 固定标题 - 向下滚动时停止动画,停止滚动时继续

html - 带有 Bootstrap 的完全响应式视频

css - 如何从一个 ClientBundle 导入图像以在另一个 ClientBundle 的样式中使用它

javascript - 从动态创建的表中获取<the> id

php - 拒绝应用来自 [Link] 的样式,因为它的 MIME 类型 ('text/html' ) 不是受支持的样式表 MIME 类型,并且启用了严格的 MIME 检查

javascript - 显示错误答案

html - 只有垂直粘性 HTML div

javascript - 如何制作滚动但大小保持固定的横幅图像

css - 如何将文本环绕在 figcaption 周围

javascript - 如何从 JavaScript 函数中的 HTML 输入中读取文本?