替换将特定Text替换为类的函数

时间:2015-02-19 15:35:00

标签: jquery html replace

您好我正在尝试编写jQuery replace函数,该函数将替换HTML中的特定文本以创建类。

我找到了jQuery和Html。看到这个小提琴:http://jsfiddle.net/davidThomas/juTtG/20

它用<b>hello world!</b>

替换括号内的文本字符

这很好,但我试图替换更多不同的文字,如下所示:

我修改了jQuery:

// this
var content = $("body").text().replace(/(\[this\])([\s\S]*)(\[\/this\])/gi,'<b>$2</b>');
console.log(content);
$("body").html(content);

// another
var content = $("body").text().replace(/(\[another\])([\s\S]*)(\[\/another\])/gi,'<b>$2</b>');
console.log(content);
$("body").html(content);

// more
var content = $("body").text().replace(/(\[more\])([\s\S]*)(\[\/more\])/gi,'<b>$2</b>');
console.log(content);
$("body").html(content);

修改HTML:

[this]hello world 1![/this] [another]hello world 2![/another] [more]hello world more![/more]

请参阅修改后的问题:http://jsfiddle.net/juTtG/384

问题是它替换了<b></b>中替换一个文本字符 我试图替换更多不同的文字。 如何使这个修改过的jQuery和HTML工作。

另一个问题是,是否有可能替换为:

<div class="body"> Add a [newclass] </div>

要:

<div class="body">Add a <b class="newclass"></b> </div>

我希望有人可以给我一些建议作为尝试。

提前致谢。

1 个答案:

答案 0 :(得分:1)

关注您的&#34; 修改后的HTML &#34;问题,请参阅this updated fiddle

这是修改过的脚本:

$(document).ready(function() {    
    var content = $("body")
        .text()
        .replace(/(\[[\s\S]*?\])/gi, '<b>')
        .replace(/\[\/[\s\S]*?\]/gi, '</b>');
    $("body").html(content);
});

它变成了这个:

[this]hello world 1![/this] [another]hello world 2![/another] [more]hello world more![/more]

进入这个:

  <b>hello world 1!<b> <b>hello world 2!<b> <b>hello world more!<b>

为此:

<div class="body"> Add a [newclass] </div>

请参阅this fiddle

使用此脚本:

$(document).ready(function() {    
    var content = $("body")
        .text()
        .replace(/\[([\s\S]*?)\]/ig, '<b class="$1"></b>');
    $("body").html(content);
});

做到这一点:

<div class="body">Add a <b class="newclass"></b> </div>

HTH,

-Ted