0

<sup>jQueryを使用して、テキストの最後の2文字をラップしようとしています。ラップしたいテキストを返すa を実行できますが、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>";
});

これは、内部に HTML マークアップがないことを前提としていますh4 (実際には最後だけが問題になります)

複数の がある場合、これも適切に処理されますh4

于 2012-10-02T19:21:52.797 に答える