我希望使用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 />");
我显然错过了一些简单的东西,但我不确定是什么。有什么指针吗?
答案 0 :(得分:2)
var elem = $('.first .sub .one h4'),
text = elem.text(),
html = text.slice(0,-2) + '<sup>' + text.slice(-2) + '</sup>';
elem.html(html);
答案 1 :(得分:2)
我会使用正则表达式
var text = $('.first .sub .one h4').text();
text = text.replace(/^(.*)(.{2,2})$/, "$1<sup>$2</sup>");
$('.first .sub .one h4').html(text);
答案 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
,这也会正确处理。