2010-06-15 5 views
4

je boucle une fonction création:remplacer des virgules avec des espaces de tableau JSON

<li id="id1" name="Tag1,Tag2,Tag3"> 
<li id="id2" name="Tag1,Tag2,Tag3"> 


$.each(data.posts, function(i, post){  
$('<li >', {id: this.id , name: post.tags}) 
}); 

Comment puis-je remplacer les virgules entre les balises avec des espaces. Aussi est-il un moyen que je peux envoyer les balises à un attribut "classe" au lieu de "nom". Il semble ne pas fonctionner dans Safari.

Répondre

10

Ce que vous voulez sans doute est la suivante:

$('<li >', {id: this.id , className : post.tags.join(' ')}) 

Par défaut, lorsque vous lancez un tableau à une chaîne, il obtenir concaténés par des virgules comme vous l'avez vu. L'utilisation de join() résoudra le problème.

En outre, class est un mot-clé réservé dans tous les navigateurs (bien que certains ne jetterai pas une erreur si vous l'utilisez), donc l'attribut que vous devez utiliser pour définir la classe est appelée className

+0

Merci! fonctionne parfaitement – Alex

+1

+1, 'class' est un [futur mot réservé] (http://bclary.com/2004/11/07/#a-7.5.3) tous devraient être évités comme identifiants ... – CMS

+0

Ce qui précède suppose que les balises sont des tableaux (ce qui, apparemment, est dans le cas d'Alex). Si tags est une chaîne, vous pourriez faire soit "tags.split (','). Join ('')" ou "tags.replace (/,/g, '')" – broofa

1

Essayez ceci:

$.each(data.posts, function(i, post){ 
$('<li >', {id: this.id , name: post.tags.join(' ')}); 
}); 
0
$.each(data.posts, function(i, post) { 
    $('<li >', {id: this.id , name: post.tags.replace(/[,]/g, ' ')}) 
}); 
-1

Utilisez la méthode de remplacement de chaîne (mentionnée dans les autres réponses) pour remplacer les virgules.

En ce qui concerne les classes, les ajouter comme ceci:

$('<li >', {id: this.id }).addClass(post.tags.join(' ')); 
+0

Cela ne remplacera que le premier ','. Pour remplacer tout, vous devez passer une regex avec l'option 'g' comme premier argument, comme dans mon commentaire ci-dessus. (Et, bien sûr, cela suppose aussi que tag est une chaîne, pas un tableau) – broofa

+0

oups, je n'avais pas réellement regardé cette partie, comme mentionné, j'ai copié le code ci-dessus. L'addClass est la façon correcte d'ajouter des classes, par opposition à un attribut "className", ce que je démontrais. J'ai corrigé le code pour concaturer correctement les étiquettes, désolé à ce sujet. – Jesse

Questions connexes