我使用 jQuery/javascript 解决了这个问题,每次加载我的任何页面时都运行下面的代码:
$(document).ready(function () {
//Get CurrentUrl variable by combining origin with pathname, this ensures that any url appendings (e.g. ?RecordId=100) are removed from the URL
var CurrentUrl = window.location.origin+window.location.pathname;
//Check which menu item is 'active' and adjust apply 'active' class so the item gets highlighted in the menu
//Loop over each <a> element of the NavMenu container
$('#NavMenu a').each(function(Key,Value)
{
//Check if the current url
if(Value['href'] === CurrentUrl)
{
//We have a match, add the 'active' class to the parent item (li element).
$(Value).parent().addClass('active');
}
});
});
此实现假定您的菜单具有“NavMenu”ID,并使用http://hostname/scriptname.php
href 属性,如下所示:
<ul id="NavMenu">
<li><a href="http://localhost/index.php">Home</a></li>
<li><a href="http://localhost/smartphone.php">Smartphone</a></li>
<li><a href="http://localhost/tablet.php">Tablet</a></li>
<li><a href="http://localhost/about.php" class="active">About Us</a></li>
<li><a href="http://localhost/contact.php">Contact Us</a></li>
</ul>
阅读 javascript 评论以了解发生了什么。如果您更喜欢使用不同的 href 布局(如在原始示例中),则必须稍微使用 CurrentUrl 变量以使其使用与 href 属性相同的布局。
对我来说,这是最简单的解决方案,因为我有一个现有的站点,其中包含一个大菜单和许多页面,并且希望避免修改所有页面。这使我可以在头文件(已经是一个中心文件)中添加一段 javascript 代码,从而解决所有现有页面的问题。