标签与jquery无法正常工作

时间:2017-02-02 11:02:49

标签: javascript jquery html css tabbing

我想知道用户点击“测试1”是否会在侧边栏锚点中添加活动类并添加背景以展开列表“#bar1”。

结果应该是侧边栏字体会变红,并且展开列表背景会变红

但是,如果我点击“测试1”,我在这里发现它不会添加类到锚。 请有人帮我纠正我的代码

$(document).ready(function(){
  $('.sidebar li a').click(function(e){
    e.preventDefault();
    $(this).addClass('active');
    $(this).removeClass('active');
    var exId=$(this).attr('href');
    $(exId).addClass('expandBg');
    $(exId).siblings().removeClass('expandBg')
  })
});
a.active{
  text-decoration: none;
  color: #f00;
}

.expandBg{
  background-color:#f00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sidebar">
  <ul>
    <li><a href="#bar1">test 1</a></li>
    <li><a href="#bar2">test 2</a></li>
    <li><a href="#bar3">test 3</a></li>
    <li><a href="#bar4">test 4</a></li>
  </ul>
</div>

<div class="expand">
  <ul>
    <li id="bar1">bar1</li>
    <li id="bar2">bar2</li>
    <li id="bar3">bar3</li>
    <li id="bar4">bar4</li>
  </ul>
</div>

1 个答案:

答案 0 :(得分:2)

这行代码$(this).removeClass('active');会导致我们想要从active锚标记中删除siblings类的问题,请在下面的代码段中找到知道该怎么做

$(document).ready(function(){
  $('.sidebar li a').click(function(e){
    e.preventDefault();
    debugger;
    $(this).addClass('active');
    $(this).parent().siblings().find("a").removeClass("active")
    var exId=$(this).attr('href');
    $(exId).addClass('expandBg');
    $(exId).siblings().removeClass('expandBg')
  })
});
a.active{
  text-decoration: none;
  color: #f00;
}

.expandBg{
  background-color:#f00;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sidebar">
  <ul>
    <li><a href="#bar1">test 1</a></li>
    <li><a href="#bar2">test 2</a></li>
    <li><a href="#bar3">test 3</a></li>
    <li><a href="#bar4">test 4</a></li>
  </ul>
</div>

<div class="expand">
  <ul>
    <li id="bar1">bar1</li>
    <li id="bar2">bar2</li>
    <li id="bar3">bar3</li>
    <li id="bar4">bar4</li>
  </ul>
</div>