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でラップします。何か案は?

これは近いと思います: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 に答える