2017-05-06 86 views
0

試圖掃描各種字符串並用html片段替換所有出現的特定字符。jQuery - 用html片段替換多個字符串中的多個字符

例如 - 我想通過掃描如下:

<div id="wrapper"> 
    <div>10,000 | 20,000 | 30,000</div> 
    <div>10,000 |: 20,000</div> 
    <div>10,000 :| 20,000</div> 
</div> 

而且有它的輸出爲:

<div id="wrapper"> 
    <div>10,000 <span class="single"></span> 20,000 <span class="single"></span> 30,000</div> 
    <div>10,000 <span class="single-wide"></span> 20,000</div> 
    <div>10,000 <span class="wide-single"></span> 20,000</div> 
</div> 

定位的字符,然後與其他文本替換下面的作品,但不適用於同一字符串中字符的多個實例,並且不允許插入html標記。

$('#wrapper div').text(function (i, old) { 
    return old 
     .replace(' | ',' single ') 
     .replace(' |: ', ' single-wide ') 
     .replace(' :| ', ' wide-single '); 
}); 

https://jsfiddle.net/s60v8o5x/

感謝任何見解。

回答

0

使用正則表達式來替代多個字符串,並使用HTML,而不是文本

$('#wrapper div').html(function (i, old) { 
    return old 
    .replace(/ \| /g,' <span class="single"</span> ') 
    .replace(/ \|: /g, ' <span class="single-wide"></span> ') 
    .replace(/ :\| /g, ' <span class="wide-single"></span> '); 
}); 

https://jsfiddle.net/dscfnnf0/2/

+0

謝謝,基督徒 - 這很接近 - 我如何在前端沒有呈現HTML 標籤的情況下插入HTML ? https://jsfiddle.net/s60v8o5x/2/ – d38

+0

使用html代替文本,我在代碼中做了一些修改https://jsfiddle.net/dscfnnf0/2/ –

+0

完美 - 謝謝 – d38

0

試試這個正則表達式&撥弄它是否適合你Fiddle

$('#wrapper div').text(function (i, old) { 
    return old 
    .replace(/ \| /g,' <span class="single"></span> ') 
    .replace(/ \|: /g, ' <span class="single-wide"></span> ') 
    .replace(/ :\| /g, ' <span class="wide-single"></span> '); 
}); 
+0

感謝Agam,猜測使用html是不同的。 – d38

+0

我以爲你要求不要在接受的答案評論中呈現前端的html。仍然很高興我可以幫助:) –