【发布时间】:2015-10-03 17:59:48
【问题描述】:
我有一个 3 部分页面。每个div(部分)都有自己独特的ID,它有两种导航形式:箭头和按钮(它们共享相同的id's 和jQuery)。当您在特定部分时,url 将更改为与div 关联的 id 的名称。很标准。
<div class="nav-buttons-wrap">
<a href="#Welcome" class="nav-buttons"></a>
<a href="#We-Are-The-Leader" class="nav-buttons"></a>
<a href="#Services" class="nav-buttons"></a>
</div>
<a href="#We-Are-The-Leader" class="down">
<i class="fa fa-angle-down"></i>
</a>
<!-- SECTION 1 --> <div id="#Welcome"></div>
<!-- SECTION 2 --> <div id="#We-Are-The-Leader"></div>
<!-- SECTION 3 --> <div id="#Services"></div>
<script>
jQuery(function($) {
$(document).ready(function(){
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();
var target = this.hash,
$target = $(target);
var navBarHeight = 0; // change if nav bar height changes
$('html, body').stop().animate({
'scrollTop': ($target.offset().top - navBarHeight)
}, 1000, 'easeInOutQuint', function () {
window.location.hash = target;
});
});
});
});
</script>
这工作得很好,但现在我希望 .nav-buttons 根据 url 中的 ID 更改颜色,换句话说,如果您位于与特定 ID 关联的部分。因此,如果您在第 2 部分,则第二个按钮的颜色与其他两个按钮的颜色不同。
我在 jQuery 方面还不够好,无法找到一种将类添加到“已选择”按钮的简洁方法,并且知道这是一种选择,因此我对这种解决方案持开放态度,但理想情况下我很想知道是否有一种纯粹的CSS 方法可以做到这一点。我找不到一个。
【问题讨论】:
-
向刚刚单击的链接/按钮添加一个活动类...(即在
e.preventDefault()之后添加类似this.addClass('active');的内容,然后添加CSS 样式以使.active元素看起来你想要的方式 -
@ochi 为点击的链接添加一个类可以满足我的需要,但更重要的是,它需要在用户位于与 id 相关联的页面部分上并且他们以其他方式到达那里时而不是点击按钮。单击按钮是事后的想法......