如何将活动状态类动态更改(添加)到导航链接
How to dynamically change (add) the active state class to a navigation link
嗨,我正在尝试创建一个投资组合网站。为了不必为每个页面重新创建标题,我决定使用 PHP include
函数添加它。我现在唯一的问题是当我单击一个链接导航到另一个页面时,活动链接不会分别更改。
包含的 HTML
<ul id="main-menu">
<li><a href="index.php" class="active">home</a></li>
<li><a href="about.php">about us</a></li>
<li><a href="portfolio.php">portfolio</a></li>
<li><a href="contact.php">contact</a></li>
</ul>
Javascript:
$(document).ready(function(){
var $menu = $("ul#main-menu li a");
$menu.click(function(){
$menu.each(function(){
$(this).removeClass("active");
});
$(this).addClass("active");
});
});
我知道问题是每次页面加载时 - 它将活动类重置为第一个链接。我不知道的是:如何将活动类动态添加到页面匹配链接中?
你需要这个:
$(document).ready(function(){
var i = document.location.href.lastIndexOf("/");
var currentPHP = document.location.href.substr(i+1);
$("ul#main-menu li a").removeClass('active');
$("ul#main-menu li a[href^='"+currentPHP+"']").addClass('active');
});
尝试创建一个在页面加载时运行的函数,该函数选择与页面具有相同href
的超链接。
或者,通过 AJAX 加载页面的主要内容,而不是传统的页面位置更改。JQuery有一个很好的AJAX实现。在线搜索jquery ajax
.
另一种选择是在单击超链接时创建一个cookie,并通过读取cookie来设置选定的cookie。尽管这会非常不可靠(后退按钮、手动 url 输入等)。
很简单:
var link = document.location.href.split('/').slice(-1); // retrieve page name
$('#main-menu li a.active').removeClass('active'); // remove class 'active'
$('#main-menu li a[href$="'+link+'"]').addClass('active');// and add it to a matching link
jsBin 演示
相关文章:
- 如何在Angular中的表的所有单元格中添加链接
- 如何使用 HTML/JavaScript 为对象添加链接
- 如何在滑块图像上添加链接
- HTML::向输入标记添加链接
- 正在向库图像添加链接
- 在旋转javascript横幅中添加链接
- 向每个堆叠条形图项目添加链接
- 根据课程自定义字段在课程页面上添加链接
- 如何使用java脚本添加链接
- 如何在D3元素中添加链接
- 如果满足条件,则使用JQuery向元素添加链接
- 当屏幕尺寸较小时,可使用Javascript向移动菜单添加链接.不再有效
- javascript下拉列表-无法添加链接
- Ext JS Gannt 在任务之间添加链接
- 添加链接时 JQuery 停止工作
- Javascript 在添加表行时添加链接文本
- 如何在 d3.js 行添加链接名称
- Umbraco 将从第 @nodename 页添加链接作为表单上的文本输入值
- 在jQuery插件中添加链接的方法
- 在可折叠内容标头(拆分链接)中添加链接 - 缺少 css