如果section有class active,那么将它的id作为类添加到body中?

时间:2017-04-13 16:15:04

标签: javascript jquery html css sections

如果你帮忙解决这个问题,我将不胜感激,我无法解决。我正在尝试创建一个函数: “如果任何部分有类”active“=>那么请使用此部分的ID  将其作为类元素添加到body中,否则删除“

这是下面的代码,但它无法正常工作,或者当我滚动到下一部分时,没有添加新类并删除前一个。

<body class="">
    <section id="home" class="active">
    </section>

    <section id="about" class="">
    </section>
</body>

if ($('section').hasClass('active')) {
    var dataSection = $('section').attr('id');
    $body.addClass(dataSection.replace('#', '') + '-active');   
} else {
    $body.removeClass('home-active');
}

3 个答案:

答案 0 :(得分:2)

请尝试在此使用this

if( $(something).hasClass("active") ){
    var grabId = $(this).attr("id");
    $("body").attr("id", grabId);
}

答案 1 :(得分:1)

当您使用始终返回第一部分$('section').attr('id')的{​​{1}}时,您需要在id内使用this

section

应该是:

$('section').attr('id');

因此它将获得当前部分的id,也不需要替换这两行可以合并到:

$(this).attr('id');

注意:您可以随时使用以下选择器获取活动部分:

$body.addClass($(this).attr('id') + '-active');

希望这有帮助。

答案 2 :(得分:1)

实际上$('section').attr('id')会为您提供不带#的id属性,您可以直接使用它,您可以在下面的演示中看到相应的主体class已更改:

&#13;
&#13;
if ($('section').hasClass('active')) {
  $("body").addClass($('section').attr('id') + '-active');
} else {
  $("body").removeClass('home-active');
}

console.log($("body").attr('class'));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<body class="">
  <section id="home" class="active">
  </section>

  <section id="about" class="">
  </section>
</body>
&#13;
&#13;
&#13;

注意:

请注意,您使用的是您尚未声明的$body,请使用$("body")来引用文档正文。