2017-05-06 87 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。仍然很高兴我可以帮助:) –