2011-11-14 2 views
8

Attualmente sto lavorando a un modulo complicato.Seleziona tutti gli input, etichette, selezioni ecc. In questo - ogni ciclo

Chiedo solo, c'è un modo migliore per fare questo:

$('.selector').each(function(){ 

    $("input", this).prop('disabled', true); 
    $("select", this).prop('disabled', true); 
    $("label", this).prop('disabled', true); 
    $("textarea", this).prop('disabled', true); 

}); 

voglio per selezionare tutti gli ingressi entro this (attualmente in loop attraverso .selector). Sto facendo questo correttamente?

+1

Sì, tecnicamente. Anche se la risposta di @ BoltClock sotto è un modo migliore per farlo. – rossipedia

risposta

16

va bene, ma per semplificare che si dovrebbe essere in grado di utilizzare la virgola come si farebbe per raggruppare tutti gli altri selettori:

$('.selector').each(function() { 
    $('input, select, label, textarea', this).prop('disabled', true); 
}); 

Se l'unica cosa che stai facendo è l'impostazione che la proprietà su quegli elementi , quindi non hai davvero bisogno del ciclo .each(). Puoi tranquillamente eliminarlo e ridurlo a questa linea singola:

$('input, select, label, textarea', '.selector').prop('disabled', true); 
+0

È '$ (". Input di selettore, .selector select, .selector label, .selector textarea "). Prop ('disabled', true);' equivalent? –

+0

@ Brian M. Hunt: dovrebbe essere. Inoltre, '$ ('. Selector'). Find ('input, select, label, textarea'). Prop ('disabled', true);' – BoltClock

+0

Neat. Mi chiedo se ci sia qualche differenza di prestazioni tra di loro. –