选择字符并换行

时间:2012-10-02 19:07:15

标签: javascript jquery html

我希望使用jQuery将最后2个字符包装在<sup>的一段文本中。我可以做一个console.log返回我要包装的文本,但它永远不会被包装。我的代码非常简单:

// get text of heading
var plansBlockHeading = $('.first .sub .one h4').text();

// filter to last 2 chars
var sup = plansBlockHeading.substr(plansBlockHeading.length-2); 

// Wrap in a <sup></sup>
$(sup).wrap("<sup />");
我显然错过了一些简单的东西,但我不确定是什么。有什么指针吗?

3 个答案:

答案 0 :(得分:2)

var elem = $('.first .sub .one h4'),
    text = elem.text(),
    html = text.slice(0,-2) + '<sup>' + text.slice(-2) + '</sup>';
elem.html(html);​

FIDDLE

答案 1 :(得分:2)

我会使用正则表达式

var text = $('.first .sub .one h4').text();
text = text.replace(/^(.*)(.{2,2})$/, "$1<sup>$2</sup>");
$('.first .sub .one h4').html(text);

http://jsfiddle.net/evPhf/

答案 2 :(得分:1)

惯用的jQuery解决方案可能如下所示:

$('.first .sub .one h4').html(function(i, html) {
       // make sure there's no whitespace issues
    html = $.trim(html);
    return html.slice(0, -2) + "<sup>" + html.slice(-2) + "</sup>";
});

这假设h4 中没有HTML标记(实际上只是最后一个问题)

如果您有多个h4,这也会正确处理。