2014-09-29 4 views
2

У меня есть неупорядоченный список, и я использую следующий код для добавления класса в текущую ссылку, которую я посетил.Как добавить класс внутри li?

$("li a").filter(function(){ 
    return this.href == location.href.replace(/#.*/, ""); }).addClass("selected"); 

Результатом является: <li><a href="#" class="selected">Link1</a></li>

Но решение мне нужно: <li class="selected"><a href="#">Link1</a></li>

Пожалуйста, помогите. Спасибо.

Обновление: Большинство текущих ответов отлично работают. Однако я столкнулся с другой проблемой.

Родитель li имеет подменю. При нажатии на ссылку подменю «выбранный» класс родительского ли. Есть ли способ сделать «выбранный» класс на родительском ли? Или, если можно просто добавить класс только на родительский ли, а не на какую-либо ссылку подменю? Заранее благодарю вас за помощь. :)

ответ

1

я думаю, что это нужно сделать, это

$("li a").filter(function(){ 
return this.href == location.href.replace(/#.*/, ""); }).parent('li').addClass("selected"); 

редактировать

$("li a").filter(function(){ return this.href == location.href.replace(/#.*/, ""); }).parents('li, li:first').addClass("selected"); 
+0

Спасибо сэр , этот работает также :) – user3892090

+0

Ваш прием был рад помочь –

+0

Привет, сэр, я опубликовал вопрос об обновлении. Надеюсь, вы снова сможете мне помочь :) – user3892090

2

Вы фильтрование элемента якоря, не li так addClass() будет добавить класс к a элементу. Вы можете использовать предок поиск (.parent(), .closest()), чтобы найти нужный li элемент, а затем использовать addClass()

$("li a").filter(function() { 
    return this.href == location.href.replace(/#.*/, ""); 
}).parent().addClass("selected"); 
+1

вы не можете сказать, что это прямой родительский элемент «a», пока вы не знаете структуру HTML –

+0

@TusharRaj Op предоставил структуру html –

+0

да .. upvoted !! –

0

уборщик и оптимизированный способ:

var targetUrl = window.location.href.replace(/#.*/, ""); 
var activeNav = $('li a[href="'+ targetUrl +'"]'); 
if (activeNav.length) { 
    activeNav.parent('li').addClass('selected'); 
} 
+0

Спасибо за ваш ответ, но он не достиг желаемого результата. – user3892090

1
$("li a").filter(function(){ 
     return this.href == location.href.replace(/#.*/, ""); }).closest('li').addClass("selected"); 
+0

благодарит сэра за ответ. Оно работает :) – user3892090

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