Javascript addClass脚本不适用于nav元素

Javascript addClass脚本不适用于nav元素,javascript,click,addclass,nav,Javascript,Click,Addclass,Nav,我正在使用下面的脚本将单击的“nav”元素类更改为我的navbar中的“active”类 $('nav a').click(function(e) { e.preventDefault(); $('nav a').removeClass('active'); $(this).addClass('active'); }); 当它在我的JSFIDLE中被隔离时,它就会工作: 但它在我的开发网站上不起作用: 我找不到阻止应用“活动”类的原因

我正在使用下面的脚本将单击的“nav”元素类更改为我的navbar中的“active”类

$('nav a').click(function(e) {
        e.preventDefault();
        $('nav a').removeClass('active');
        $(this).addClass('active');
    });
当它在我的JSFIDLE中被隔离时,它就会工作:

但它在我的开发网站上不起作用:


我找不到阻止应用“活动”类的原因。我必须添加所有父类吗

我刚刚将您的代码粘贴到主站点的控制台中,效果非常好。我确实在页面上注意到你有一个加载器。您确定jQuery代码在nav元素存在之前没有运行吗

我认为正在发生的是,页面加载,DOM在技术上已经就绪,因此jQuery绑定click事件,但是这些元素不存在,因为您有其他代码加载内容,所以jQuery实际上不绑定任何东西

尝试将其稍微更改为

$("body").on("click", "nav a", function(e){
    e.preventDefault();
    $('nav a.active').removeClass('active');
    $(this).addClass('active');
});

然后它应该对你有用

我认为它不起作用,因为这里的锚标签必须同时完成两个任务 1.需要向其自身添加类 2.需要将用户带到id位于锚定标记href中的div

你可以试试这个代码

它将绑定单击功能以激活锚定标记,然后通过滚动效果将用户移动到新的div

$('nav li a').click(function(e) {
        e.preventDefault();
        $('nav a').removeClass('active');
        $(this).addClass('active');
        var id=$(this).attr('href');
       scrollToId(id);
    });

    function scrollToId(id){
                $('html, body').animate({
                    scrollTop: $(id).offset().top
                     }, 2000);    
    }

检查控制台(F12)是否在控制台中看到任何东西?我没有。这非常有效,甚至不需要包含活动类来应用移除。我将脚本内联放置在顶部导航之前。我很难将该类应用于“接触”导航右边缘的倾斜盒端。我有一个转移状态的脚本。可能是干扰,或者我没有正确选择它。但是,由于我的设计已经改变,我不再需要末端的倾斜div,所以我无论如何都要删除它。我将在再做一些调整后刷新html。只有当我将它直接放在html中的nav元素上方时,这才有效。它在链接文件中不起作用,所以我将其滚动到my smoothscroll script.hm中,这有点奇怪。jQuery中的
on
方法应该随时启动,而不管代码放在哪里。至少您已经找到了一个有效的解决方案:)考虑到这一点,我已经在滚动之后将类更改移动到平滑滚动脚本中。它工作完美,没有警告或错误。再次感谢您的洞察力。我正在从头开始重建一切,以使一切井然有序,避免冲突。这帮助我将功能合并到滚动功能中。