Javascript 选择字符并换行

Javascript 选择字符并换行,javascript,jquery,html,Javascript,Jquery,Html,我希望使用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);

我希望使用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 />");
//获取标题的文本
var plansBlockHeading=$('.first.sub.one h4').text();
//过滤到最后2个字符
var sup=平面锁定标题。substr(平面锁定标题。长度-2);
//裹上
$(辅助)换行(“”);
我显然错过了一些简单的东西,但我不确定是什么。有指针吗?

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

var text = $('.first .sub .one h4').text();
text = text.replace(/^(.*)(.{2,2})$/, "$1<sup>$2</sup>");
$('.first .sub .one h4').html(text);
var text=$('.first.sub.one h4').text();
text=text.replace(/^(.*)(.{2,2})$/,“$1$2”);
$('.first.sub.one h4').html(文本);
我会使用regexp

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

一个惯用的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>";
});
$('.first.sub.one h4').html(函数(i,html){
//确保没有空格问题
html=$.trim(html);
返回html.slice(0,-2)+“”+html.slice(-2)+“”;
});
这假设在
h4
中没有HTML标记(实际上,仅仅在末尾是个问题)


如果您有多个
h4

的话,这也可以正确处理。一个惯用的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>";
});
$('.first.sub.one h4').html(函数(i,html){
//确保没有空格问题
html=$.trim(html);
返回html.slice(0,-2)+“”+html.slice(-2)+“”;
});
这假设在
h4
中没有HTML标记(实际上,仅仅在末尾是个问题)



如果您有多个
h4

,这也可以正确处理,您是将其重新插入DOM,还是希望刚刚包装的字符串神奇地出现在屏幕上?看起来就像是在包装文本,但没有将其附加到DOM的任何位置。。选择器也必须是HTML结构或元素。。你似乎只包装了纯文本。。尝试将其直接附加到元素中。您是将其重新插入DOM中,还是希望刚刚包装的字符串神奇地出现在屏幕上?看起来就像是在包装文本,但没有将其附加到DOM中的任何位置。。选择器也必须是HTML结构或元素。。你似乎只包装了纯文本。。尝试将其直接附加到元素中..您将用最后两个字符和新元素替换所有内容。我认为这不是我们想要的。@user1689607-你可能是对的,但这就是OP在问题中所做的,谁知道呢?@adeneo:是的,这正在取代一切。不,这不是我在这个问题上想做的——这是我请求帮助的目的;不需要被动攻击性。我认为OP将JS/DOM视为一个单一的活动环境,而不是需要显式通信的两个单独的桥接环境。如果我们能看到我们所有操作的实时更新,那就太好了。:)您正在用最后两个字符和新元素替换所有内容。我认为这不是我们想要的。@user1689607-你可能是对的,但这就是OP在问题中所做的,谁知道呢?@adeneo:是的,这正在取代一切。不,这不是我在这个问题上想做的——这是我请求帮助的目的;不需要被动攻击性。我认为OP将JS/DOM视为一个单一的活动环境,而不是需要显式通信的两个单独的桥接环境。如果我们能看到我们所有操作的实时更新,那就太好了。:)Regex似乎有点过分了,不是吗?我的意思是,你确切地知道需要哪些角色,而且他们在结尾是正确的。此外,您应该使用
.html()
而不是
text()
来设置新内容,除非您想查看标记。最后,如果在
h4
中有任何其他标记,它将丢失。这是一个简单问题的简单解决方案。如果这个问题提到h4有html,我会把它包括进去。我觉得这是正则表达式滥用。此外,如果
h4
中的文本在最后2个字符之前包含换行符,它将失败。正则表达式似乎有点过分了,不是吗?我的意思是,你确切地知道需要哪些角色,而且他们在结尾是正确的。此外,您应该使用
.html()
而不是
text()
来设置新内容,除非您想查看标记。最后,如果在
h4
中有任何其他标记,它将丢失。这是一个简单问题的简单解决方案。如果这个问题提到h4有html,我会把它包括进去。我觉得这是正则表达式滥用。此外,如果
h4
中的文本在最后2个字符之前包含换行符,则该方法将失败。这一方法非常有效,在我看来,这是最优雅的解决方案。谢谢这是一个完美的解决方案,在我看来,这是最优雅的解决方案。谢谢