在jQuery中,如何选择href指向当前URL的<a>
例如:
网址= http://server/dir/script.aspx?id=1
我想选择此<a>
<a href="/dir/script.aspx">...</a>
我尝试了这个,但它不起作用:
var url = window.location.href;
$('#ulTopMenu a["'+url+'"*=href]').addClass("selected");
可能是错误的语法。有人知道正确的做法吗?
提前致谢
答案 0 :(得分:4)
听起来你正试图解决所选标签'模式'。我发现我可以用以下代码解决这个问题:
var nav = location.pathname.substr(1).split('/', 2)[0] || '/';
if (nav) {
$('#ulTopMenu a[href$="' + nav + '"]').parent().addClass('selected');
}
这基本上是说如果URL以与当前URL相同的结尾结束,则添加所选的类。虽然你必须注意“类似”的网址 - 但是如果你有很多实际上相似的网址,你应该考虑服务器端解决方案。
(我在这段技术上发表了一篇文章 - 如果它实际上是你要做的事情:http://leftlogic.com/lounge/articles/auto-selecting_navigation/)
答案 1 :(得分:1)
我不知道您问题的答案,但选择器语法有效吗?
'#ulTopMenu a["http://www.foo.com"*=href]'
我想如果这样的事情可能会被写成
'#ulTopMenu a[href*="http://www.foo.com"]'
答案 2 :(得分:0)
谢谢雷米,它没有真正起作用,但它很接近 这是我的最终代码
var scriptname = GetUrlScriptname();
$('#ulTopMenu a[href$="' + scriptname + '"]').parent().addClass('selected');
function GetUrlScriptname()
{
var rex = new RegExp("\\/[^\\/]+\\.\\w+($|\\?)");
var match = rex.exec(location.pathname);
return match[0].substring(1);
}