javascript - jquery addClass/removeClass 到基于 div 位置的导航链接

标签 javascript jquery css

我正在尝试通过检测具有特定 id 的 div 向导航中的链接添加一个类,每个 div 都在不同的页面上并位于顶部。

如果我对每个单独的实例使用它,分别更改 div 和类

$(document).on("scroll ready", function() {
    if ($(this).scrollTop()>=$('#contact').position().top){
        $("#nav .contact a").addClass("ur-here");
    }
});

代码有效,除非我像这样重复使用该代码

$(document).on("scroll ready", function() {
    if ($(this).scrollTop()>=$('#contact').position().top){
        $("#nav .contact a").addClass("ur-here");
    }
});

$(document).on("scroll ready", function() {
    if ($(this).scrollTop()>=$('#blog').position().top){
        $("#nav .blog a").addClass("ur-here");
    }
});

此时只有第一个实例有效(第一个实例我的意思是我先放哪一部分并不重要,其余部分似乎被忽略)。 .

我也尝试过将它们全部包含在一个函数中

$(document).on("scroll ready", function() {
    if ($(this).scrollTop()>=$('#intro').position().top){
        $("#nav .home a").addClass("ur-here");
    }
    else if ($(this).scrollTop()>=$('#services').position().top){
        $("#nav .service a").addClass("ur-here");
    }
    else if ($(this).scrollTop()>=$('#contact').position().top){
        $("#nav .contact a").addClass("ur-here");
    }
    else if ($(this).scrollTop()>=$('#blog').position().top){
        $("#nav .blog a").addClass("ur-here");
    }
});

但同样只有第一个实例有效。

我也试过换掉

$(document).on("scroll ready", function() {

$(document).ready(function() {

$(window).load(function() {

有类似的结果,除非我使用

$(window).load(function() {

在第二种情况下,代码适用于它和第一种情况,但无论我使用什么,它都会继续忽略其余部分。

请帮忙


已编辑

如果有帮助,它是一个 wordpress 网站


解决了

我只是用

定位了单个“#”
if ($("#mydiv").length > 0){

如果目标 div 存在并且长度大于 0,我可以让导航链接做一些事情。

最佳答案

如果您的目标是确保在向任一方向滚动时,您会在用户滚动到顶部的最底部 元素上显示 ur-here 类窗口进入,则:Live Example

$(document).on("scroll ready", function() {
    // Remember scrollTop
    var scrollTop = $(this).scrollTop();

    // Remove the class from all relevant elements
    $("#nav a").removeClass("ur-here");

    // Working from the BOTTOM up, add it to the first matching element
    if (scrollTop >=$('#blog').position().top) {
        $("#nav .blog a").toggleClass("ur-here");
    }
    else if (scrollTop >=$('#contact').position().top) {
        $("#nav .contact a").addClass("ur-here");
    }
    else {
        // ...and so on
    }
});

关于javascript - jquery addClass/removeClass 到基于 div 位置的导航链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24480763/

相关文章:

javascript - 声明超过 10 个对象

javascript - 如何在已选择的选项上触发 onchange 函数

html - 超链接图片

javascript - SharePoint 2010 可视化 Web 部件、JS 和 CSS

javascript - Google Chrome App - 检查应用程序还是常规站点

javascript - 如何在不重定向的情况下测试javascript重定向?

javascript - 当源 Canvas 和目标 Canvas 相同时,HTML5 Canvas drawImage函数速度很慢?

javascript - 无法使用jquery从表div内的文本框中获取值

javascript - 创建一个要被一次又一次调用的函数

css - 有什么方法可以在布局中继承 Bootstrap 类吗?