2015-07-29 3 views
1

я хочу, чтобы добавить класс Ли, когда тег щелкнул я использую JQuery addclass, но не знаете, как получить его к LIдобавить класс Ли, когда тег внутри щелкают

<ul class="nav"> 
<li class=""> <!---------add class to here----> 
    <a href="default.asp">Home</a> <!-------- when this is clicked----> 
    <ul> 
     <li><a href="news.asp">link 1</a></li><!-------- but NOT when this is clicked-----> 
     <li><a href="news.asp">link 2</a></li> 
     <li><a href="news.asp">link 3</a></li> 
    <ul> 
</li> 
<li><a href="news.asp">News</a></li> 
<li><a href="contact.asp">Contact</a></li> 
<li><a href="about.asp">About</a></li> 
</ul> 

I надеюсь, что это имеет смысл

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

+0

* Ninja ответы *. В дополнении, вот документ о селекторе 'parent()'. https://api.jquery.com/parent/ –

+0

Хотите, чтобы вложенные ссылки добавили класс в их непосредственный LI? Это меняет ответ. –

+2

Ошибка HTML, последний '

    ' должен быть '
' для внутреннего списка. – Stickers

ответ

3

Для эффективности, вы должны использовать один обработчик делегированы событий, прикрепленного к вашему .nav элементу:

Если вы хотите, чтобы все родственный элемент в удалить этот класс использование not.

например.

$('.nav').on('click', 'li > a', function(){ 
      var $li = $(this).parent(); 
      $li.siblings().not($li.addClass('smclass')).removeClass('smclass'); 
    }); 

Примечание: Ответы с .nav > li (акцент на >) будет работать только для ссылок верхнего уровня. Вам нужно уточнить, хотите ли вы одинаковое поведение на всех ссылках (что в настоящее время используется в этом примере).

Если вы только хотели, чтобы работать по ссылкам на высшем уровне было бы

$('.nav').on('click', '> li > a', function(){ 
      var $li = $(this).parent(); 
      $li.siblings().not($li.addClass('smclass')).removeClass('smclass'); 
    }); 
+0

это сработало отлично благодаря :-) –

5

можно достичь путем добавления следующей функции мыши

$("ul.nav > li > a").click(function(){ 
    $(this).parent().addClass("your_class"); 
}); 
2

Вы можете использовать непосредственный селектор ребенка, чтобы предназначаться все прямые Дочерние элементы:

$('.nav > li > a').click(function(){ 
    $(this).parent().addClass('smclass') 
}); 
+0

Вопрос неоднозначен о том, как вложенные ссылки должны вести себя. Вы должны включить свой первый ответ тоже (на всякий случай) :) –

+1

Brillant благодарит так много, это работает, но как я могу удалить класс, если класс был добавлен в другой ли? –

+0

@TrueBlueAussie: отлично ... у вас это получилось :) –

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