Javascript 我正在添加到元素中的类正在被添加,但在删除时不会被删除
好的,我的导航栏HTML在这里,我使用boostrap导航Javascript 我正在添加到元素中的类正在被添加,但在删除时不会被删除,javascript,jquery,html,css,twitter-bootstrap-3,Javascript,Jquery,Html,Css,Twitter Bootstrap 3,好的,我的导航栏HTML在这里,我使用boostrap导航 <header> <nav class="navbar navbar-default navbar-fixed-top" role="navigation" id="MyNav"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-t
<header>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation" id="MyNav">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data- toggle="collapse" data-target="#collapse" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#featured"><h1>Wisdom <span class="subhead">Pet Medicine</span></h1></a>
</div>
<div class="collapse navbar-collapse" id="collapse">
<ul class="nav navbar-nav navbar-right" id="collapse">
<li class="active"><a href="#featured">Home</a></li>
<li><a href="#mission">Mission</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#staff">Staff</a></li>
<li><a href="#testimonials">Testimonials</a></li>
</ul>
</div>
</div>
</nav>
</header>
现在的问题是,每当我向下滚动到某个部分时,活动类都会更改为不同的li标记,因此inbody类会根据IFCondition附加到元素。但是当我向上滚动时,inbody类不会按照ELSE条件被删除。需要帮助。您在选择器中有一个额外的空间用于li.active 更改:
var current= $(this).find('#MyNav li .active a').attr('href');
^^ // extra space
到
您的版本在中查找活动类,而不是@charlietfl所说的正确的类。但是,更好的解决方案可能是使用事件目标:
$('.navbar-fixed-top').on('activate.bs.scrollspy',function(ev){
var current = $(ev.target).find('a').attr('href');
...
});
这行代码有两个问题:
var current= $(this).find('#MyNav li .active a').attr('href');
您的初始选择$这将是您的导航元素。然后使用.find搜索nav元素的所有后代。MyNav不是同一元素的后代,因此find函数不会返回任何内容
第二个问题是li.active,它将查找具有活动类的元素,这些活动类是li元素的后代。但是您需要类处于活动状态的li元素。为了达到这个目的,不要在它们之间留空格
这条线应该是这样的:
var current= $(this).find('li.active a').attr('href');
我知道答案了。我不得不从find方法中删除MyNav id,它成功了。我还是很困惑,为什么会这样?谢谢你,乔。这是一个很好的解释。
var current= $(this).find('#MyNav li .active a').attr('href');
var current= $(this).find('li.active a').attr('href');