Javascript 如何根据li的子级将活动css类应用于它<;a>;href

Javascript 如何根据li的子级将活动css类应用于它<;a>;href,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我使用以下标记来显示导航菜单: <ul class="nav sf-menu"> <li><a href="@Url.Action("Index","Home")">Home<span></span></a></li> 但是我得到一个错误,li没有href。如何使其工作?href属性存在于 我还检查了链接是否为/,以防止所有链接被标记为活动链接 如果您的链接与此简化版本配合使用,您也可以尝试此简化版本:

我使用以下标记来显示导航菜单:

<ul class="nav sf-menu">
    <li><a href="@Url.Action("Index","Home")">Home<span></span></a></li>

但是我得到一个错误,
li
没有
href
。如何使其工作?

href属性存在于

我还检查了链接是否为
/
,以防止所有链接被标记为活动链接

如果您的链接与此简化版本配合使用,您也可以尝试此简化版本:

jQuery(function () {
    var url = window.location.pathname;
    jQuery('.sf-menu li > a[href="' + url + '"]').parent().addClass('active');
});
试试这个

$('.sf-menu li >a').each(function () {

尝试此
$('.sf menu li>a')。每个(函数(){//并根据url路径名regexp测试其规范化的href如果(urlRegExp.test(this.href.replace(/\/$,''){$(this.parent().addClass('active');})
@Sushil i编写了以下“$('.sf menu li>a')。每个(函数(){//并根据url路径名regexp测试其规范化的href if(urlRegExp.test(this.href.replace(/\/$,'')){$(this.parent().addClass('active');}});”但这会导致所有导航都有活动的class@Sushil如果我不在根目录下,您的代码将正常工作。如果我在根目录下,则所有li都将处于活动状态。现在这部分工作正常。如果我导航到“关于”页面“”,则“关于”链接将正确处于活动状态。但是如果我导航到根“”,那么所有的li都将处于活动状态。这意味着正则表达式不太正确。看起来是部分匹配。我将尝试一些测试,看看是否可以修复正则表达式。实际上,从我的测试来看,这似乎对我来说是正确的。我无法重现你的问题。我在
ul
列表中有一堆链接,其中包含子列表。子链接具有嵌套的URL,如您的示例所示。转到父页面时,只有
li
获取活动类。所有的子页面都没有。这是一个显示它工作的例子。单击run以使url/\u显示/。你能在JSFIDLE上重新创建这个问题吗?但是在我的情况下,当我在根目录(主页)中时,所有链接都被选中了。现在我尝试下面的“$('.sf menu li>a')。每个(函数(){if(str==this.href.toLowerCase()){$(this.parent().addClass('active');/(“class”,“active”);///hightlight parent tab}”都运行良好,不确定这段代码是否是正确的方法?
jQuery(function () {
    var url = window.location.pathname;
    jQuery('.sf-menu li > a[href="' + url + '"]').parent().addClass('active');
});
$('.sf-menu li >a').each(function () {