Boucle sur les éléments dans jQuery

Je veux faire une boucle sur les éléments d'un formulaire HTML, et de stocker les valeurs de la <input> les champs d'un objet. Le code suivant ne fonctionne pas, cependant:

function config() {
    $("#frmMain").children().map(function() {
        var child = $("this");
        if (child.is(":checkbox"))
            this[child.attr("name")] = child.attr("checked");
        if (child.is(":radio, checked"))
            this[child.attr("name")] = child.val();
        if (child.is(":text"))
            this[child.attr("name")] = child.val();
        return null;
    });

Ni le suivant (inspiré par jobscry réponse):

function config() {
    $("#frmMain").children().each(function() {
        var child = $("this");
        alert(child.length);
        if (child.is(":checkbox")) {
            this[child.attr("name")] = child.attr("checked");
        }
        if (child.is(":radio, checked"))
            this[child.attr("name")] = child.val();
        if (child.is(":text"))
            this[child.attr("name")] = child.val();
    });
}

L'alerte indique toujours que child.length == 0. En sélectionnant manuellement les éléments œuvres:

 
>>> $("#frmMain").enfants (les) 
Objet longueur=42 
>>> $("#frmMain").les enfants().filtre ("case") 
Objet longueur=3 

Tous les conseils sur la façon de faire la boucle correctement?

  • Votre thread juste m'a sauvé 20 minutes de, ligne par ligne, les champs d'entrée pour de multiples formes -_-;. +1.