如果你帮忙解决这个问题,我将不胜感激,我无法解决。我正在尝试创建一个函数: “如果任何部分有类”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');
}
答案 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
已更改:
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;
注意:强>
请注意,您使用的是您尚未声明的$body
,请使用$("body")
来引用文档正文。