包裹一个跨度的字符串 [英] Wrapping strings with a span

查看:92
本文介绍了包裹一个跨度的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我有一个可以内容的div中的文本,如下所示:

 < div id =board> ; 
< div>#include< iostream.h>< / div>
< div>< / div>
< div> int main(){< / div>
< div>
clrscr
< span id =openParen>(< / span>
< span id =closeParen>)< / span>
;
< / div>
< div> return 0;< / div>
< div>}< / div>
< / div>

如果我看到一些关键字,它将被包装在 span

 < div id =board> 
< div>< span class =fragment>#include< iostream.h>< / span>< / div>
< div>< / div>
< div> int< span class =fragment> main< / span>(){< / div>
< div>
< span class =fragment>
clrscr
< span id =openParen>(< / span>
< span id =closeParen>)< / span>
;
< / span>
< / div>
< div> return 0;< / div>
< div>}< / div>
< / div>

我完成了封装关键字,如#include和main,但我无法使用此代码来封装clrscr() (来自 https://stackoverflow.com/users/2684660/funkwurm ):


$每个(function(index,child))$ {
var text = $(child).html( );
text = text.replace(/(#include(\s *& lt;。*& gt))/ g,'< span class =frag> $ 1< ; / span>');
text = text.replace(/(main)/ g,'< span class =frag> $ 1< / span>');
text = text.replace(/(clrscr)/ gi,'< span class =frag> $ 1< / span>');
$(child).html(text);
} );


解决方案

jQuery版本(非CoffeeScript)工作 jsFiddle

  $('#board')。children()。each(function(index,child){
var text = $(child).html();
text = text.replace(/ #include(\s *& lt;。*& gt))/ gi,'< span> $ 1< / span>');
text = text.replace(/ \(。* \))/ gi,'< span> $ 1< / span>');
$(child).html(text);
});

原来你不能使用 text()像我在dcro的回答下提出的。


For instance, i have a text in my contenteditable div like this:

<div id = "board">
    <div>#include<iostream.h></div>
    <div></div>
    <div>int main(){</div>
    <div>
        clrscr
           <span id="openParen">(</span>
           <span id="closeParen">)</span>     
        ;   
    </div>
    <div>return 0;</div>
    <div>}</div>
</div>

If i saw some keywords, it would be wrap in span.

<div id = "board">
    <div><span class="fragment">#include<iostream.h></span></div>
    <div></div>
    <div>int <span class="fragment">main</span>(){</div>
    <div>
        <span class="fragment">
        clrscr
           <span id="openParen">(</span>
           <span id="closeParen">)</span>     
        ;
        </span>   
    </div>
    <div>return 0;</div>
    <div>}</div>
</div>

Im done wrapping keywords like #include and main but i am unable to wrap clrscr() using this code (from https://stackoverflow.com/users/2684660/funkwurm):

$('#board').children().each(function(index, child) {
   var text = $(child).html();
       text = text.replace(/(#include(\s*&lt;.*&gt;)?)/g, '<span class="frag">$1</span>');
       text = text.replace(/(main)/g, '<span class="frag">$1</span>');
       text = text.replace(/(clrscr)/gi, '<span class="frag">$1</span>');
       $(child).html(text);
});

解决方案

jQuery version (non CoffeeScript) working jsFiddle

$('#board').children().each(function(index, child) {
    var text = $(child).html();
    text = text.replace(/(#include(\s*&lt;.*&gt;)?)/gi, '<span>$1</span>');
    text = text.replace(/(main\(.*\))/gi, '<span>$1</span>');
    $(child).html(text);
});

Turns out you can't use text() like I suggested under dcro's answer.

这篇关于包裹一个跨度的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆