0

<sup>我正在寻找使用 jQuery将最后 2 个字符包装在一段文本中。我可以做一个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 />");

我显然错过了一些简单的东西,但我不确定是什么。任何指针?

4

3 回答 3

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

小提琴

于 2012-10-02T19:10:36.970 回答
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/

于 2012-10-02T19:12:22.630 回答
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.

于 2012-10-02T19:21:52.797 回答