2014-08-27 4 views
0

У меня есть многоуровневое меню, и мне нужно выделить меню TOP уровня, добавив в список класс active.Добавить класс в меню li, если href соответствует переменной

Example on fiddle

хранить значение ссылки, которое должно быть активным в JavaScript переменная var activeHREF= '/news/';

мне нужно JQuery, которые могут выполнять поиск по списку li и матч с HREF из в списке, если он совпадает с элементом привязки, тогда он должен добавить class='active' в этот конкретный список.

Я это это более эффективный способ справиться мой сценарий, где я могу иметь до 3 или 4 многоуровневое меню и мне нужно, чтобы выделить родительское меню верхнего уровня,

Указатель может быть хорошим способом, чтобы начать.

+0

Цените каждый ответ, +1 для всех, но более подходящего ответа на мой вопрос от "Брайана с двумя версиями тоже. – Learning

ответ

3

jsFiddle Example с несколькими уровнями неупорядоченных списков.

$("a[href='" +activeHREF+ "']").parent().addClass("active") 

Использование фильтр может сделать то же самое

$('a').filter(function() { 
    return $(this).attr('href') == activeHREF; 
}).parent().addClass('active'); 
+0

Как я могу изменить это, чтобы он работал с текстом-якорем, я пробовал этот текст (+) + (+) .parent(). AddClass («active») ;, но он не работает. – Learning

+1

Вы можете использовать содержит, http://jsfiddle.net/3p3wkcos/10 - свободный фитинг - выберет ссылки, которые также содержат ваш якорный текст, т. Е. «Новости» и «Новости» при выборе «Новости», или фильтр http: //jsfiddle.net/3p3wkcos/11/, который является более ограничительным и возвращает только ссылки с указанным текстом привязки. Оба варианта хороши в зависимости от вашего сценария. –

1

Это, как я хотел бы сделать это:

Online Demo

$(document).ready(function(){ 
var activeHREF= '\/contact\/'; 
    $('li').removeClass('active'); 
    $('a[href="'+activeHREF+'"]').parent().addClass('active');   
}); 
3

Я думаю, что вы ищете что-то вроде этого:

$("li:has(a[href='" +activeHREF+ "']):first()").addClass("active") 
+0

Я думаю, что это был бы самый чистый способ добиться того, чего вы хотите. –

+1

Ницца, но фанки с несколькими уровнями http://jsfiddle.net/3p3wkcos/8/ –

+1

Спасибо, что указали это, Брайан. Соответственно отредактировал мой ответ. – ngergo6

Смежные вопросы