Javascript 我正在添加到元素中的类正在被添加,但在删除时不会被删除

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

好的,我的导航栏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-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');