2010-09-17 6 views
1

J'essaie de trouver un groupe de <label>s sous une forme de mine basée sur un tableau d'éléments et leur attribut id.jQuery: boucle sur des éléments qui écrivent leur attribut ID dans un tableau?

par exemple. [ input#country , input#other-country ] serait en mesure de trouver <label for="country"> , <label for="other-country"> et ainsi de suite ...

jusqu'à présent, j'ai ce code:

var LOCATION = {}; 

LOCATION.option = form.find('input[name=location]').toArray(); 
LOCATION.labels = [ 
    $.each(LOCATION.option, function(i, input) { 
     $('label[for='+input.id+']'); 
    }) 
]; 

Lors de la connexion à l'input.id dans la boucle $.each je reçois la valeur correcte en cours d'écriture sur mais je peux » Je semble trouver un moyen d'écrire mon élément label apparié de l'intérieur de la boucle $.each dans le tableau LOCATION.labels par la suite.

Est-ce que quelqu'un sait comment les mettre dans le tableau? toArray() ne semble pas fonctionner non plus ...

Merci d'avoir lu.

Répondre

1

Je serais probablement utiliser .map():

var LOCATION = {}; 

LOCATION.option = form.find('input[name=location]').toArray(); 
LOCATION.labels = $.map(LOCATION.option, function(input) { 
    return $('label[for='+input.id+']').get(0); 
}); 

Voir here pour un exemple de cela en action.

+0

-je configurer un exemple ici: http://jsfiddle.net/wVeCc/ – Jannis

+0

Ah, n'avait pas rafraîchi la page avant de poster mon violon ... merci beaucoup! Cela fonctionne à merveille. – Jannis

+0

Glad je peux aider :-) – DMI

0

Essayez celui-ci. Pas vraiment une solution d'une ligne pour obtenir directement le tableau, mais j'ai testé cela et ça fonctionne bien.

var LOCATION = {}; 
$(function(){ 
    var form = $("#form"); //sample form 
    LOCATION.option = form.find('input[name=location]').toArray(); 
    LOCATION.labels = []; 
    $.each(LOCATION.option, function(i,input) {   
    LOCATION.labels.push($('label[for='+input.id+']').get(0)); 
    }); 
}); 
+0

Merci pour cette solution. J'utilise la fois que Dave m'a donné pour ce projet mais il est bon de savoir que .push fonctionnera aussi bien. Merci. – Jannis

0

Vous avait presque, juste .push() à l'intérieur .each()

var LOCATION = {}; 

LOCATION.option = form.find('input[name=location]').toArray(); 
LOCATION.labels = []; 

$.each(LOCATION.option, function(i, input) { 
    LOCATION.labels.push($('label[for='+input.id+']')); 
}) 
Questions connexes