jQuery: выберите <a>, который указывает на текущий URL - PullRequest
0 голосов
/ 27 ноября 2008

В jQuery, как вы выбираете <a>, который указывает на текущий URL

Например:
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");

Возможно, неправильный синтаксис. Кто-нибудь знает правильный способ сделать это?

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 27 ноября 2008

Похоже, вы пытаетесь решить выбранную вкладку «шаблон». Я обнаружил, что могу решить это сам с помощью следующего кода:

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

В основном это говорит о добавлении класса выбранных, если URL заканчивается тем же окончанием, что и текущий URL. Хотя вы должны следить за «похожими» URL-адресами, но если у вас действительно много похожих URL-адресов, вам, вероятно, следует рассмотреть решение на стороне сервера.

(Некоторое время назад я опубликовал статью об этой технике - если это действительно то, что вы пытаетесь сделать: http://leftlogic.com/lounge/articles/auto-selecting_navigation/)

1 голос
/ 27 ноября 2008

Я не знаю ответа на ваш вопрос, но допустим ли этот синтаксис селектора?

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

Я бы вообразил, если такая вещь возможна, она была бы написана как

'#ulTopMenu a[href*="http://www.foo.com"]'
0 голосов
/ 27 ноября 2008

Спасибо, Реми, это не сработало, но близко.
Вот мой окончательный код

  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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...