Сравнение URL со ссылками

У меня есть следующий HTML:

<ul class="vertical_menu no_select">
    <li class="edge_top">&nbsp;</li>
    <!-- Menu Items Here     -->
    <li class="not_selected"><a class="selection_link" href="index.htm">Home</a></li>
    <li class="not_selected"><a class="selection_link" href="index.htm">Subitem 1</a></li>
    <li class="not_selected"><a class="selection_link" href="index.htm">Subitem 2</a></li>
    <!-- Menu Items End Here -->
    <li class="edge_bottom">&nbsp;</li>
</ul>

Теперь ссылки с классом "selection_link" нужно иметь li элемент (их родитель), чтобы иметь новый класс "selected" если текущий url соответствует href значение внутри тега привязки. Я могу получить полный URL-адрес, но я не знаю, как его использовать, чтобы лучше видеть, поскольку на разных уровнях каталогов может быть несколько страниц с одинаковыми именами.

Спасибо, если вы можете помочь! Я использую jQuery со всем этим, поэтому не стесняйтесь приводить мне примеры jQuery!

3 ответа

Решение

Проверьте jsFiddle. Это должно сделать трюк:

$("ul.vertical_menu li a").each(function() {

    if (this.href == window.location.href) {
        $(this).parent().toggleClass("not_selected selected");
    }

});
$('.selection_link').each(function() {
    if($(this).attr('href') === window.location.pathName.substring(1)) {
        $(this).parent().attr("class", "selected");
    }
});

не проверено, но это должно вас начать. подстрока объясняется тем, что pathname начинается с '/', вы можете просто поместить это в свой href

Или это...

$('.vertical_menu a').each(function() {
    if (location.href.search(this.attr('href')) != -1) {
        $(this).parent().addClass('selected');
    }
});
Другие вопросы по тегам