动态地将活动类应用于navli
dynamically apply active class to nav li
我在include中包含了一个头文件。在头部是导航栏。
如何使用jQuery将class="active"
应用到相关的li
。
我能想到的唯一方法是在实际页面上设置一个变量,应用一个等于相关页面变量的id和if函数,所以如果它们匹配,则应用一个类到li。
然而,我认为一定有一种更简单的方法来实现这一点。
<ul class="nav nav-pills right" id="div">
<li id="home" class="active">
<a href="index.php">Home</a>
</li>
<li id="search">
<a href="search.php">Search</a>
</li>
<li id="contact">
<a href="contact.php">Contact</a>
</li>
</ul>
一个简单的方法是每页一个脚本:
$('#home').addClass('active'); // for home page
你可以尝试将href匹配到当前url:
var path = window.location.pathname.substring(1);
$('.nav>li>a[href="' + path + '"]').parent().addClass('active');
更紧凑的方式:
$(function(){
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
$('a[href="'+ sPage +'"]').parent().addClass('active');
});
一旦页面加载,它将运行以下代码:
$(document).ready(function(){
$('li').removeClass('active');
$('li a').each(function() {
$found = $.contains($(this).prop("href"),location.pathname);
if ($found) {
$(this).closest('li').addClass('active');
break;
}
});
});
或
你也可以使用regex:
$(document).ready(function(){
$('li').removeClass('active');
var regex = /[a-z]+.php/g;
var input = location.pathname;
if(regex.test(input)) {
var matches = input.match(regex);
$('a[href="'+matches[0]+'"]').closest('li').addClass('active');
}
});
您可能需要具有与php文件相似的id名称。
在这里查看演示:demo
你可以这样做:
//remove the active class from all items, if there is any
$('.nav>li').removeClass('active');
//finally, add the active class to the current item
$('a[href='+ location.pathname.substring(1) +']').parent().addClass('active');
你可以使用javascript来查找基于url的当前列表项,通过在DOM加载后将类添加到正确的列表项(例如窗口的字符串操作)。
我发现了一个在共享菜单上设置活动(当前)类的例程,但我需要修改它以仅设置父链接,而不是"最接近"的链接。它在没有子菜单的菜单项上工作得很好,但是当单击子菜单项时,页面加载后主菜单上没有指示。(我需要修改的代码如下)
(function($) {.fn美元。activeNavigation = function(selector) {Var pathname = window.location.pathnamevar extension_position;var href;Var hrefs = []$(选择器);("a"). each(函数(){//删除href文件扩展名extension_position = $(this).attr("href"). lastindexof (" . ");Href = (extension_position>= 0) ?(美元).attr("href")。Substr (0, extension_position):(美元).attr("href");
if (pathname.indexOf(href) > -1) { hrefs.push($(this)); } }) if (hrefs.length) { hrefs.sort(function(a,b){ return b.attr("href").length - a.attr("href").length }) hrefs[0].closest('li').addClass("current") } }; })(jQuery);
如果有人还在谷歌上查怎么做这是我的解决方案
var path = window.location.href; // full url
$('a[href="'+ path +'"]').parent().addClass('active'); // find by selector url
HTML <ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="http://example.com/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="http://example.com/history"> History</a>
</li>
</ul>
- 将函数的上下文应用于javascript变量
- 将CSS应用于printWindow.print();在Javascript中
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- $scope.apply()何时应用于angular
- Javascript非常简单:'阅读更多''显示较少'应用于Wordpress的功能
- 尝试应用于<tr>在ng单击中
- 如何将javascript仅应用于1个表单中的2个表单提交按钮中的1个
- 将脚本应用于Angular 2上的输入
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 如何将参数应用于String.prototype.format函数
- 动态地将过滤器应用于 JSON.parse()
- $location更改不适用于ngchange,而是应用于ngclick
- 如何将 :empty 选择器应用于 XML 文档
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 如何使用 JavaScript 将样式应用于 CKEditor 中的选定文本
- MongoDB 无法将$addToSet应用于 Meteor JS 中的非数组
- 将类应用于jquery ui对话框
- 将CSS应用于在JavaScript中创建的表-表的位置不正确
- 如果检查了输入,则将类应用于<身体>,没有jQuery
- 动态地将活动类应用于navli