jquery导航突出显示

时间:2010-10-08 11:12:43

标签: jquery uinavigationcontroller

您好我正在尝试在Jquery中编写一个脚本,自动选择主导航中的当前页面链接。导航只是一个简单的UL:

<ul id="primaryNav">
    <li>
        <a href="retail.html">Home</a>
    </li>
    <li>
        <a href="vision.html">Our Vision</a>
    </li>
    <li>
        <a href="context.html">Town in context</a>
    </li>
</ul>

到目前为止,我的Jquery看起来像这样:

$('#primaryNav').find("a[href='"+window.location.href+"']").each(function(){
    $(this).addClass("selected");
}); 

这不起作用,因为我认为它选择整个网址,而我只需要选择最后一部分,例如retail.html或vision.html然后添加类.selected

有人可以帮忙吗?提前谢谢。

3 个答案:

答案 0 :(得分:2)

使用attribute ends-with selector来保证安全($=代替=),如下所示:

$('#primaryNav').find("a[href$='"+window.location.href.split('/').pop()+"']")
                .addClass("selected");

此处也不需要.each(),只需调用.addClass()即可将其添加到所有匹配的元素中(即使您的示例中应该有一个)。

答案 1 :(得分:1)

就像那样(基于页面名称):

$('#primaryNav').find("a[href$='" + window.location.href.split("/").reverse()[0] + "']").addClass("selected");

答案 2 :(得分:0)

简单子字符串怎么样?

var href = window.location.href;
var htmlPageName = href.substring(href.lastIndexOf('/') + 1);

$('#primaryNav').find("a[href='" + htmlPageName +"']").each(function(){
    $(this).addClass("selected");
});