2012-03-13 15 views
9

qui è HTML:jQuery aggiungere classe a Li corrente e rimuovere prev li quando clic all'interno di li a

<ul>  
    <li class="current"><a href="#">menu item</a></li> 
    <li><a href="#aba">menu item</a></li> 
    <li><a href="#abb">menu item</a></li> 
    <li><a href="#abc">menu item</a></li> 
    <li><a href="#abd">menu item</a></li> 
</ul> 

se premo 'un' collegamento lo farà addClass 'corrente' a Li cliccato e rimuovere i vecchi li class ? questo è il mio tentativo:

$('ul li a').click(function(){ 
    $('ul li').removeClass('current'); 
    ... don't know here (add class to current li) ... 
}); 
+0

jQuery ha grande documentazione che merita una lettura: http://api.jquery.com/category/traversing/ –

+0

nvm ottenuto grazie Rob – test

risposta

29

Usa .parent('li') o .closest('li') per selezionare il cliccato <li>.

$('ul li a').click(function() { 
    $('ul li.current').removeClass('current'); 
    $(this).closest('li').addClass('current'); 
}); 
+0

grazie funzionato bene – test

0

Basta aggiungere la classe di this in questo modo ...

$(this).addClass('yourClass'); 
+1

'this' è l'elemento ''. –

6

all'uso su ('click') se si sta utilizzando la versione più recente di jQuery

$('ul li a').on('click', function(){ 
    $(this).parent().addClass('current').siblings().removeClass('current'); 
}); 

un violino è here.

2

Rob è giusto, ma $('ul li.current').removeClass('current'); non ha funzionato per me. Il seguente codice funziona.

jQuery('ul li a').click(function() 
{ 

jQuery('ul').children().removeClass('selected'); 
jQuery(this).closest('li').addClass('selected'); 

}