jQuery: mostrare e nascondere gli elementi di una lista

Mostrare e nascondere gli elementi di una lista con jQuery richiede semplicemente l'uso dei metodi di attraversamento del DOM in riferimento all'elemento corrente. Se il fratello precedente o successivo dell'elemento corrente ha una data classe CSS, allora eseguiremo un'azione per mostrarlo o nasconderlo. Se l'elemento corrente non soddisfa questo requisito, allora selezioneremo gli elementi attivi partendo direttamente dal genitore, ossia dalla lista stessa. Vediamo come.

Useremo questa struttura HTML:


<ul id="test">
    <li>A</li>
    <li class="active">B</li>
    <li class="active">C</li>
    <li>D</li>
    <li>E</li>
</ul>

Con questi stili CSS:


#test {
	width: 14em;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 1.1em;
	border: 1px solid #999;
}

#test li {
	display: block;
	padding: 0.4em;
	background: #eee;
	cursor: pointer;
}

#test li.active {
	background: #c60;
	display: none;
}

Assoceremo a ciascuna voce un evento click con le seguenti azioni:


$(function() {
    
	$('li', '#test').click(function() {
	
		var $li = $(this);
		var next = $li.next();
		var prev = $li.prev();
		
		if(next.is('li.active')) {
		
		   if(next.is(':hidden')) {
		
			  next.slideDown(300);
			  
		   } else {
		   
		   	  next.slideUp(300);
		   
		   }
		
		}
		
		if(prev.is('li.active')) {
		
			if(prev.is(':hidden')) {
		
			  prev.slideDown(300);
			  
		   } else {
		   
		   	  prev.slideUp(300);
		   
		   }

		
		}
		
		if(!prev.is('li.active') && !next.is('li.active')) {
		
			$li.parent().find('li.active').each(function() {
			
				if($(this).is(':hidden')) {
				
					$(this).slideDown(300);
				
				} else {
				
					$(this).slideUp(300);
				
				}
			
			});
		
		}
	
	});    
    
});

Verificheremo che l'elemento precedente o successivo a quello corrente abbiano o meno la classe active. Qualora questa condizione non venisse soddisfatta, allora partiremo dalla lista per eseguire una selezione globale su tutte le voci aventi la classe specificata.

Potete visionare l'esempio finale in questa pagina.

Torna su