jQuery:选择<a> which points to the current URL</a>

时间:2008-11-27 00:54:19

标签: jquery css-selectors

在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");

可能是错误的语法。有人知道正确的做法吗?

提前致谢

3 个答案:

答案 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);
}