我正在搜索这个,但只找到基于ul列表的解决方案。
我有这段代码:
<div class='nav'>
<a class='nav-link nav-01' id="tab01" href='#scene-1'></a>
<a class='nav-link nav-02' id="tab02" href='#scene-2'></a>
<a class='nav-link nav-03' id="tab03" href='#scene-3'></a>
<a class='nav-link nav-04' id="tab04" href='#scene-4'></a>
</div>
我想点击它时将类(例如“nav-01”更改为“nav-01-on”)。此外,每个链接的活动类样式都不同(nav-01为nav-01-nav-02-on-nav-02 ...)。
有什么建议吗?提前致谢; - )
答案 0 :(得分:0)
此外,每个链接都有一个不同的活动类样式(nav-01为nav-01-on,导航02为导航-02-on ......)。
由于您正在使用课程,因此您不需要使用其他课程名称来描述“活动”课程。链接的状态。这对CSS课程来说很酷。
由于您的链接已经具有唯一标识符,因此您提供了id
属性的形式,您只需要应用通用的“活动状态”即可。类,例如on
(可以是你想要的任何东西)。然后在你的CSS中你可以做类似
.on { /* general rules for elements with the .on class */ } #tab01.on { /* specific rules for element #tab01 with the .on class */ }
我想在点击它时更改课程(例如&#34; nav-01&#34;到&#34; nav-01-on&#34;)。
由于您的问题被标记为jquery
,我将使用jQuery,因此这里是您想要的天真解决方案。我相信你可以改进它。
//We start assuming we have no active link
var $activeLink = null;
//We apply a listener to every element with the class .nav-link, using jQuery
$('.nav-link').click(function() {
if ($activeLink) {
$activeLink.removeClass('on');
}
//Store the link we clicked on as the active link.
//Notice we are wrapping it with the jQuery function,
//so $activeLink is a jQuery object
$activeLink = $(this);
$activeLink.addClass('on');
});
以上是上述内容的一小部分: https://jsfiddle.net/p1tumym9/4/
答案 1 :(得分:0)
Working Fiddle to play around with
为了让自己的生活更轻松,您应该做的是在单个active
课程之间切换,并在CSS中指定每个链接在active
时的外观如何class,而不是创建一堆独特的类(可能难以管理)。
如何在活动链接之间切换:
$('.nav').find('a').click(function(){
// Remove active class from all links
$('.nav').find('a').each(function(){
$(this).removeClass('active');
});
// Add active class to current link
$(this).addClass('active');
});
在CSS中,只需指定给定active
类时每个链接的外观:
.nav-01.active {
/* active styles for nav-01 */
}
.nav-02.active {
/* active styles for nav-01 */
}
.nav-03.active {
/* active styles for nav-01 */
}
.nav-04.active {
/* active styles for nav-01 */
}