当用户点击侧边栏中的链接时,它应该加下划线以提醒他们在哪里。我正在尝试使用jQuery将“活动”类添加到锚点,如果它们在相应的页面上。这是我到目前为止所得到的:
var pathy = $(location).attr('pathname');
pathy.val().replace(/\\/g, '');
if(pathy == $('#sidebar ul li a').text) {
$(this).addClass('active');
}
else {
}
不用说,它确实不起作用。我应该在PHP中这样做吗?
答案 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”]选择器,您可以通过其属性获取项目的选择器。