2011-11-14 5 views
8

Obecnie pracuję nad jakąś skomplikowaną formą.Wybierz wszystkie wejścia, etykiety, wybory itp. W TYM - każda pętla

prostu zastanawiasz się, czy jest jakiś lepszy sposób to zrobić:

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

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

}); 

Chcę wybrać wszystkie wejścia wewnątrz this (obecnie przelotowe .selector). Czy robię to poprawnie?

+1

Tak, technicznie. Chociaż poniższa odpowiedź @ BoltClock jest lepszym sposobem na zrobienie tego. – rossipedia

Odpowiedz

16

To dobrze, ale w celu uproszczenia go powinieneś być w stanie korzystać z przecinkami, jak w przypadku grupy innych selektorów:

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

Jeśli jest jedyną rzeczą, którą robisz ustawienie tej właściwości na tych elementach , wtedy naprawdę nie potrzebujesz pętli .each(). Możesz go bezpiecznie upuścić i zmniejszyć do tego jedno-liniowego:

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

Czy '$ (" selektor wejściowy, wybór selektora, .selector label,. Selektor textarea "). Prop (" wyłączony ", prawda);" ekwiwalent? –

+0

@ Brian M. Hunt: Powinno być. Również '$ (selektor '.) Find (' input, select, label, textarea '). Prop (' disabled ', true);' – BoltClock

+0

Schludny. Zastanawiam się, czy istnieje między nimi różnica w wydajności. –

Powiązane problemy