2010-01-06 6 views
0

J'ai une spécification pour les produits dans le document texte que je dois transférer en HTML.Remplacer le symbole par une étiquette à l'aide de jquery

peut sembler un peu étrange mais, mais ce que je suis en train de faire est de remplacer les étiquettes de paragraphe en deux colonnes de la table, donc ceci:

<p>Load (kg):5,000, 10,000, 20,000, 30,000</p> 
<p>Excitation Voltage: 10vdc recommended, 20vdc maximum</p> 

dans ce

<tr> 
    <td>Load (kg)</td> 
    <td>5,000, 10,000, 20,000, 30,000</td> 
    </tr> 

<tr> 
    <td>Excitation Voltage</td> 
    <td>10vdc recommended, 20vdc maximum</td> 
    </tr> 

Pour remplacer balise de paragraphe J'ai utilisé la fonction ci-dessous

$("p").each(function() { 
     $(this).replaceWith("<td>" + $(this).text() + '</td>'); 
    }); 

Je dois donc me connecter à ':' pour fermer et fermer et ouvrir ses données de la table (colonne)

Toute aide appréciée

Merci à l'avance

Dom

Répondre

2

Ceci est spécifique à votre exemple particulier et suppose des données bien climatisées. Si vous pouvez avoir plusieurs points dans le texte, vous devrez ajuster l'argument limite de split pour le limiter à 2 résultats.

$("p").each(function() { 
    var text = $(this).text().split(':'); 
    $(this).replaceWith("<td>" + text[0] + '</td><td>' + text[1] + '</td>'); 
}); 
1

Vous pouvez utiliser Split et obtenir l'indice 0 valeur à placer dans le premier td et l'indice 1 valeur placée dans la seconde td.

Quelque chose comme ça

$("p").each (function() { 
    var splitArr = $(this).text().split(':'); 
    var str = "<table><tr><td>"; 
    str+= splitArr[0] + "</td><td>"; 
    str += splitArr[1] + "</td>"; 
    str += "</tr></table>"; 

    $(this).replaceWith (str); 
}); 
1

La façon la plus simple est sans doute d'utiliser REGEXP:

$('p').each(function() { 
    $(this).replaceWith("<tr><td>"+$(this).text().replace(/\:\s?/, '</td><td>')+'</td></tr>'); 
}) 

soutient également plusieurs cellules et décapage espace blanc après les deux points.

Questions connexes