0

我想改变一个输出块:

<div>Lorem ipsum dolor sit amet (consectetuer adipiscing elit sed diam nonummy nibh euismod tincidunt)</div>

对此:

<div>Lorem ipsum dolor sit amet <span class="italics">(consectetuer adipiscing elit sed diam nonummy nibh euismod tincidunt)</span></div>

JavaScript:

var div = $('div');
var matches = div.match(/\((.*?)\)/);

if (matches) {
  matches.css('color', 'red');
}

基本上,使用正则表达式用 addClass 将所有内容包装在(here)中。有任何想法吗?

我觉得这很接近:http: //jsfiddle.net/saltcod/DjHUt/

4

3 回答 3

1

您可以使用html方法:

$('div').html(function(i, h){
   return h.replace(/\((.*?)\)/, '<span class="italics">$&</span>');
})

http://jsfiddle.net/WmCLz/

于 2013-02-27T15:00:31.713 回答
0

尝试这个:

div = $('div');
div.html(div.text().replace(/\([^)]+\)/g, '<span class="italics">$&</span>'));

现场演示:

http://jsfiddle.net/oscarj24/weJWL/

于 2013-02-27T15:09:40.477 回答
0

这应该可以完成工作:http: //jsfiddle.net/cqTq7/2/

这是我的代码:

var div = $('div'),
    divHTML = div.html();
var match = divHTML.match(/\((.*?)\)/);

divHTML = divHTML.replace(match[0], '<span class="italics">$&</span>');

div.html(divHTML);

请注意,该match函数是 JavaScript 中的函数,而不是 jQuery。这里我也使用了 JavaScriptreplace函数。

于 2013-02-27T15:29:46.133 回答