2011-11-21 14 views
5

Come mai questo ..come nascondere più selettori come una volta con jQuery

$("div.toggle1").hide(); 
    $("div.toggle3").hide(); 
      $("div.toggle4").hide(); 
      $("div.toggle5").hide(); 

non è equvalent a questo ...

  $('#container div').not('.toggle2').hide(); 

che si verifica su un evento click, ma doesn' t funzionano allo stesso modo di digitare manualmente più tag hide(). Sto solo cercando di ridurre l'uso del tag hide() per ogni div che continuo ad aggiungere all'interno del mio genitore #container div.

+0

tenta di rimuovere '# container' dal selettore nel secondo caso. Il risultato è lo stesso in entrambi i casi ora? – Tadeck

+1

pubblica il tuo markup –

+5

I due sono equivalenti per me .. vedi: http://jsfiddle.net/jli1/nVNDA/ (solo commenti/uncomment e riesegui) – jli

risposta

10
$("div.toggle1, div.toggle3, div.toggle4, div.toggle5").hide(); 

o semplicemente dare ogni elemento DOM che si nasconde la stessa classe e si può fare solo:

$('.hideClass').hide(); 
+0

Ok, non sapevo che potresti aggiungere più selettori al iniziando così e separandoli con virgole. questo è bello e ha funzionato per me. – blackhawk

+0

perfecto. hehehe –

0

Si può facilmente il controllo attraverso i CSS. Aggiungi una classe nascosta al contenitore padre che avrà uno stile display:none al suo interno. Se non si desidera display:none per div con classe toggle2, sostituire lo stile per questo elemento. In questo modo non è necessario chiamare hide su tutti i contenitori o selezionare tutti i contenitori e chiamare il metodo hide.

Prova questa

.hidden{ 
    display:none; 
} 

.hidden .toggle2{ 
    display:block; 
} 

//This will add hidden class to the container which will 
//ultimately hide all the inner divs except div with class toggle2 
$('#container').addClass('hidden');