jQuery: find vs. each (Formularfelder löschen / deselektieren)

k3nguruh

Erfahrenes Mitglied
Hallo,

ich möchte eine Reihe von Form Felder löschen bzw. deselektieren.
Jetzt habe ich 2 Möglichkeiten gefunden. Vll kann mir einer sagen, welche die bessere / richtigere Möglichkeit ist.

Möglichkeit 1: .find
Javascript:
$(form).find(':input[type=radio], :input[type=checkbox]').prop('checked', false);
$(form).find(':input:not([type=radio], [type=checkbox])').val('');

Möglichkeit 2: .each
Javascript:
$(':input', $(form))
    .each(function(i, elem) {
        //
        if (
            $(elem).prop('type') == "checkbox" ||
            $(elem).prop('type') == "radio"
        )
        {
            $(elem)
                .prop('checked', false);
        }
        //
        else
        {
            $(elem)
                .val('');
        }
    });

Wenn es was anderes / besseres / schnelleres gibt, bin ich davon auch nicht abgeneigt ;-)
 
Jetzt habe ich 2 Möglichkeiten gefunden. Vll kann mir einer sagen, welche die bessere / richtigere Möglichkeit ist.

Eine richtigere Möglichkeit gibt es nicht.
Es kommt immer ein bisschen auf den eigenen Stil und die eigene Vorliebe an.
Ansonsten kann man sagen alles was funktioniert ist richtig.

Was die bessere Variante ist lässt sich wahrscheinlich nur durch Testszenarien herausfinden.
Aus dem Bauch würde ich Tippen, das die 1. Variante etwas performanter ist, da durch die CSS Selektoren nur die gewollten Elemente angesprochen werden und nicht erst die nicht gewollten Elemente durch If-Anweisungen ausgeschlossen werden.
 
Es gibt auch noch eine weitere Möglichkeit:
Javascript:
$(':input[type=radio], :input[type=checkbox]', form).prop('checked', false);
 
$.find ist die schnellere Variante, da jQuery intern den Aufruf von:

Code:
$('selector',context)
eh zu
Code:
$(context).find('selector')
umwandelt. Es wird dadurch ein Schritt gespart.
 
Zurück