2015-10-07 64 views
2

我得到了这个jQuery脚本,应该将类“活动”添加到我的李,但它不。该脚本如下:jQuery脚本不会添加活动类

jQuery(function() { 
var pgurl = jQuery(location).attr('href'); 
console.log(pgurl); 
jQuery("ul.pagesubmenu-ul li a").each(function(){ 
     if(jQuery(this).attr("href") == pgurl) 
     jQuery(this).parent().addClass("active"); 
}) 

});

我真的不知道它为什么不工作。我试图在this page上使用它(在主导航下面的subnav中)。

提前致谢!的

+0

确定'href'属性也有类似的网址作为'location'对象,通常href标签不包含域名(相对路径) –

+0

首先,检查if条件是否会被执行。检查在调试或添加警报,如果条件,以确保代码jQuery(this).parent()。addClass(“active”);被执行 –

回答

1

它没有得到任何这些链接上的完全匹配。 pgurl显示http://xn--fnpark-pua9l.dk/konference-ny/,但<a>标签没有结尾斜杠(http://xn--fnpark-pua9l.dk/konference-ny)。在比较字符串之前尝试清理网址。这里是一个线程,可以让你这么做:https://stackoverflow.com/a/2541083/5169684

+0

这很有道理!非常感谢您的回复!我会把这个标记为正确的,因为这是它不工作的原因:) – bjarkof

+1

我很高兴我能帮上忙。我建议你检查一下其他的答案。所提及的方法可能会使您的代码在长期内更具可读性。 –

+1

我要使用建议的taxicala方法。方式更清洁,比我自己的代码更好! :) – bjarkof

4

,而不是循环所有的链接,就可以直接使用jQuery通过其href属性中选择:

$(function() { 
    $("a[href='" + location.href + "']").parent().addClass('active'); 
}); 

注意location.href将返回完整的URL,与主机和方案,如果您使用的是相对URL在您的网站:

$(function() { 
    $("a[href='" + location.pathname + "']").parent().addClass('active'); 
}); 

此外,您还可以使用一些字符作为通配符:

= is exactly equal 
!= not equal 
^= starts with 
$= ends with 
*= contains 
~= contains word 
|= starts with prefix 
+0

这不是正则表达式吗?网址可能包含搜索路径(/ link?q = test)。无论如何,你已经得到了我的+1, –

+0

谢谢!我想正则表达式可以工作,但它不是我的强:) – taxicala

+0

@taxicala - 感谢您的回复!我只是尝试使用你的脚本,但我得到一个错误:无法识别的表达式:a [href = http://xn--fnpark-pua9l.dk/konference-ny/] – bjarkof

0

为什么不工作?你可以做的jsfiddle与您的导航结构......

HTML

<ul class="page"> <li><a href="1">Link</a> <ul class="subpage"> <li><a href="#">Sub Link</a></li> <li><a href="#">Sub Link</a></li> <li><a href="#">Sub Link</a></li> </ul> </li> <li><a href="2">Link</a></li> <li><a href="3">Link</a></li> <li><a href="4">Link</a></li> <li><a href="5">Link</a></li> </ul>

JQUERY

jQuery(function() { $("ul.page li ul.subpage li a").each(function(){ $(this).addClass('active'); }); });

https://jsfiddle.net/xp315ydq/