如何根据URL添加“活动”类?

时间:2014-01-08 23:52:14

标签: php jquery css

当用户点击侧边栏中的链接时,它应该加下划线以提醒他们在哪里。我正在尝试使用jQuery将“活动”类添加到锚点,如果它们在相应的页面上。这是我到目前为止所得到的:

var pathy = $(location).attr('pathname');
pathy.val().replace(/\\/g, '');
if(pathy == $('#sidebar ul li a').text) {
    $(this).addClass('active');
} 
else {
}
不用说,它确实不起作用。我应该在PHP中这样做吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

$('#sidebar ul li a').each(function() {
    if ($(this).text() == pathy) {
        $(this).addClass('active');
    }
});

虽然我不是最好的正则表达式,所以请确保首先返回您的值,以确保它应该/不应该匹配。

修改 - 在以下评论之后

看起来你真的不需要对字符串做太多的操作,所以我认为不需要正则表达式。此外,如果您检查href标记中的a属性而不是文本名称可能会更好,因为您可能希望href值为“about.php”,但文本值“关于我”。

以下是我要做的事情:

var pathy = location.pathname; //should return something like "/filename.php"
pathy = pathy.slice(1); //this will trim the first "/" character

$('#sidebar ul li a').each(function () {
    if ($(this).attr('href') == pathy) {
        $(this).addClass('active');
    }
});

以下是fiddle示例。

答案 1 :(得分:0)

您在错误的上下文中使用$(this)。要实际选择一个项目以便影响它,您可以使用它来代替:

$('[pathname="' + pathy + '"]').addClass('active');

使用[name =“value”]选择器,您可以通过其属性获取项目的选择器。