0

在 jQuery 中,如何选择<a>指向当前 URL 的 href

例如:
URL =
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");

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

提前致谢

4

3 回答 3

4

听起来您正在尝试解决选定的选项卡“模式”。我发现我可以使用以下代码自己解决这个问题:

var nav = location.pathname.substr(1).split('/', 2)[0] || '/';
if (nav) {
    $('#ulTopMenu a[href$="' + nav + '"]').parent().addClass('selected');
}

这基本上说如果 URL 以与当前 URL 相同的结尾结尾,则添加 selected 类。尽管您必须注意“相似”的 url - 但如果您有很多实际上相似的 url,您可能应该考虑使用服务器端解决方案。

(我不久前发表了一篇关于这项技术的文章——如果这实际上是你想要做的:http: //leftlogic.com/lounge/articles/auto-selecting_navigation/

于 2008-11-27T01:10:00.207 回答
1

我不知道您的问题的答案,但该选择器语法有效吗?

'#ulTopMenu a["http://www.foo.com"*=href]'

我想如果这样的事情是可能的,它会写成

'#ulTopMenu a[href*="http://www.foo.com"]'
于 2008-11-27T00:59:49.790 回答
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);
}
于 2008-11-27T02:51:44.963 回答