[英]how to add class 'active' to nav item whose href is in the location.pathname
我正在嘗試在 Jekyll 模板之上構建一個博客風格的網站。 我目前正在編寫和設計導航的樣式,這給我帶來了一些問題。 使用這個問題的答案,我設法在當前頁面上添加了active
類,但這里有一些仍然需要解決的問題:
[baseurl]/reviews/[name-of-post]
,但評論“標簽”未激活:我不確定如何解決第一個問題,但對於第二個問題,我想我需要在 location.pathname 中搜索相關的 href,但我需要進一步研究這個問題。 將根據需要進行更新,但我一直在玩這個,但沒有運氣,所以我想我會在此期間發布。
以下是相關部分的代碼片段:
側邊導航 HTML(用 Liquid 編寫)
<nav id="side-nav">
<ul class="nav-items-list">
<li id="nav-item"><a href="{{ site.baseurl }}/"><i class="fas fa-home"></i></a></li>
{% for page in site.pages %}
<li id="nav-item">
<a href="{{ site.baseurl }}/{{ page.title | downcase }}/">
<i class="{{ page.icon }}"></i>
</a>
</li>
{% endfor %}
</ul>
</nav>
示例頁面(YAML frontmatter)
---
layout: page
title: Reviews
permalink: /reviews/
icon: "fas fa-star-half-alt"
---
jQuery
$(function(){
var current = location.pathname;
$('#nav-item a').each(function(){
var $this = $(this);
if($this.attr('href').indexOf(current) !== -1){
$this.addClass('active');
}
})
})
這應該足夠了,但是如果需要更多代碼,請告訴我。 所有代碼也可在GitHub上找到,該項目也托管在 GitHub Pages 上。
提前致謝。
傑米
以下理論上應該有效:
// Compute the closest (2-part) base path from the current location
var basePath = '/' + window.location.pathname.split('/', 3).filter(Boolean).join('/') + '/';
// Add `active` class to the corresponding link if any
$('#nav-item a[href="' + basePath + '"]').addClass('active');
第一行基本上采用 pathName 的前兩部分,因此:
/glossd/
,它會產生/glossd/
,/glossd/reviews/
,它會產生/glossd/reviews/
,/glossd/reviews/something/
,它仍然會產生/glossd/reviews/
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.