2016-10-10 2 views
-1

So habe ich so etwas wie diese:JavaScript/jQuery RegExp, etwas in einer Spanne Suche nach einer anderen Spanne Hinzufügen um

<article class="visible"> 
    <p class="p1"> 
     <span class="s1"> Home Fries $2.00</span> 
    </p> 
</article> 

Aber manchmal kann der Preis seines $45/$32 (so, zwei durch ein / getrennt Optionen). Ich habe herausgefunden, wie man das mit regExp (/([$]\w*(\/[$]\w*)?)/) bekommen kann. Was mich tötet, ist, alle Preise auf der Seite zu finden und sie in einer anderen Spanne mit einer bestimmten Klasse zu verpacken. Ich weiß, ich kann .wrap() auf jQuery verwenden, aber was ich habe Probleme mit der finding Teil.

Irgendwelche Hilfe bitte?

+0

Sie rufen auch nicht auf ein Stück eines Textknoten .wrap. –

Antwort

0

Sie können regex leicht zum Finden von Zieltext verwenden. Verwenden Sie .html(function), um HTML des Elements zu ändern.

$(".s1").html(function(i, html){ 
 
    return html.replace(/([$][\d\.]+)/g, "<span class='s2'>$1</span>"); 
 
});
.s1 { color: blue } 
 
.s2 { color: red }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<article class="visible"> 
 
    <p class="p1"> 
 
     <span class="s1"> Home Fries $2.00</span> 
 
    </p> 
 
</article>

+0

Ich habe Ihren Code verwendet und es funktioniert, aber wenn ich es für ändern: $ (". Deli-Kurs-Info Artikel p"). Html (Funktion (i, html) { zurück html.replace (/ [ $] \ w. {1,}/g, " $ 1"); }); Es funktioniert nicht mehr und ersetzt den Inhalt für $ 1 ... Weißt du, warum könnte das sein? – nakkeru

+0

@nakkeru Ich denke, das Problem ist in $ 1. Es gibt eine Gruppe von Übereinstimmungen zurück, die sich in '()' befinden. Sie sollten einen Teil der Zeichenfolge, die Sie einfügen möchten, in den Span zwischen '()' schreiben. Zum Beispiel '/ ([$] \ w. {1,})/g' – Mohammad

+0

Sie sind sehr richtig, das hat das Problem gelöst. Vielen Dank. – nakkeru

Verwandte Themen