2010-03-22 6 views
3
de LIs Nom

Compte tenu du bloc de code HTML suivant:jquery - Créer une liste de tous les

<ul id="taglist"> 
<li><a name="45" href="">Product 1</a></li> 
<li><a name="1146" href="">Product 2</a></li> 
<li><a name="13437" href="">Product 3</a></li> 
<li><a name="51" href="">Product 4</a></li> 
</ul> 

Est-il possible pour JQUERY de retourner une chaîne, une variable avec les valeurs de nom:

alert(tagliststring); 

alerterait: 45,1146,13437,51

Merci

Répondre

7

Vous pouvez utiliser la fonction each:

var names = []; 
$('#taglist > li > a').each(function() { 
    names.push(this.name); 
}); 
var result = names.join(','); 
alert(result); 

De cette façon, names sera un tableau rempli de chaque nom, et result sera la chaîne délimitée par des virgules que vous recherchez.

Pour plus d'informations, voir le jQuery documentation.

Une encore plus petite façon de le faire est d'utiliser la fonction map jQuery:

var names = $('#taglist > li > a').map(function() { return this.name; }).get(); 
var result = names.join(','); 

Le premier exemple sera probablement plus facile pour les gens à lire et à comprendre.

0
var output; 
$('li a').each(function() { output += $(this).attr('name') + ','; }); 

Veuillez noter que cela donnera un , supplémentaire à la fin.

+0

Existe-t-il un moyen de ne pas ajouter un, à la fin? – AnApprentice

+0

voir la réponse de TM. –

5

Utilisation $.map:

var names = $('#taglist > li > a').map(function() { 
    return this.name; 
}).get().join(','); 
// names will contain the string: "45,1146,13437,51" 

La méthode $.map permet de transmettre chaque élément dans le jeu identifié le courant à travers une fonction, la production d'un nouvel objet jQuery contenant les valeurs de retour.

Après $.map, j'utilise la méthode get, pour obtenir un objet JavaScript Array brut, où je peux finalement appeler la méthode join, pour générer une chaîne.

Vérifiez l'exemple ci-dessus here.

Questions connexes