2010-02-11 7 views
1

J'ai besoin de construire une variable de chaîne en utilisant jQuery pour trouver tous les nœuds de texte entourés de balises span. Surtout, je dois séparer chaque segment de texte avec le caractère de pipe "|".Créer une variable Javascript en utilisant jquery Manipulation

Par exemple prendre le code HTML suivant:

<div id="myDiv"> 
<span>this</span> <span>is</span> <span>the</span> <span>text</span> 
</div> 

En utilisant jQuery je dois produire les éléments suivants:

var my_variable = "this|is|the|text"; 

Jusqu'à présent, j'ai la déclaration jQuery suivante, mais cela ajoute juste le caractère pipe à la fin et ne sépare pas chaque segment de texte.

var my_variable = $("#myDiv").find("span").text() + '|';

Toute aide serait grandement appréciée.

Remarque: Pour supprimer le dernier caractère de conduite à la fin de la chaîne que je vais utiliser:

my_new_variable = "my_variable.slice(0, -1)"; 

Répondre

6

Vous pouvez utiliser map() sur l'élément de travées pour obtenir le texte. Les tableaux Javascript ont une méthode join() qui mettra les pipes entre eux mais vous devez d'abord convertir votre objet jQuery en un tableau Javascript. Utilisez $.makeArray() pour cela.

var my_variable = $.makeArray($("#myDiv span").map(function() { 
    return $(this).text(); 
})).join("|"); 
+0

je reçois l'erreur suivante: TypeError:.. Résultat d'expression « $ ("# myDiv") trouver ("span") carte (function() {return $ (this) .text();}). join '[indéfini] n'est pas une fonction. – user270778

+0

@hayler: oui j'ai déjà réglé ça. Essayez la version mise à jour. – cletus

+0

Merci beaucoup pour la réponse - très proche sauf que je reçois un double "|" entre chaque chaîne de texte. – user270778

0
var strings = []; 
$('#myDiv span').each(function(){ 
    strings.push($(this).text()); 
}); 
var my_variable = strings.join('|'); 
0
var pipeText=""; 

$('#myDiv span').each(function(){ 
    pipeText+=$(this).text() + "|"; 
}); 

pipeText = pipeText.slice(0, -1); 
Questions connexes