1

段落内のテキストのセクションをスパンでラップするにはどうすればよいですか。たとえば、次のようになります。

<p class="info"> Posted by johnny, 20/07/2012 4:47pm (3 days ago) </p>

ポスターの名前をスパンで囲むことができるようにしたいと思います。これは必ずしも 1 語になるとは限りません。John Smith や John H Smith になる可能性があります。

基本的には、「Posted by」の後、段落の最後のコンマ (,) の前にあるものをラップしたいと考えています。

正規表現が今後の方法だと思いますが、これまで触れたことはありません。

4

2 に答える 2

6
$('.info').html(function(i, v) {
    return v.replace(/(Posted by )([^,]+)(,)/, '$1<span class="auther">$2</span>$3');
});

これがフィドルです:http://jsfiddle.net/9Urph/

于 2012-07-22T22:14:37.610 に答える
1

正規表現が今後の方法だと思いますが、これまで触れたことはありません。

1つのオプションですが、必ずしもそうではありません。

基本的に、コンマを見つける必要があります (コンマの長さは既にわかっているため"Posted by")。それを見つける最も簡単な方法はString#indexOf. それを見つけたら、テキストを分割するだけです。次のように実行できます。ソース

$("p.info").each(function() {
    var $this = $(this),
        html = $this.html(),
        comma = html.indexOf(",");
    html = html.substring(0, 10) + // 10 = length of "Posted by "
           "<span>" +
           html.substring(10, comma) +
           "</span>" +
           html.substring(comma);
    $this.html(html);
});

splitText...または、DOM API のfunctionを使用してほぼ同じことを行うこともできます。

于 2012-07-22T22:13:31.110 に答える