我正在尝试使用replaceWith()
方法替换文本节点。我可以使用replace()
方法在元素中找到一个字符串,并将其替换为我想要的任何内容,但对于replaceWith()来说似乎并非如此。
为什么会这样,有没有办法呢?
var word = 'NOT work';
var sent = $('#without').html().replace(word, 'WORK');
$('#without').html(sent);
$("#with "+word).replaceWith('work');
答案 0 :(得分:2)
.replaceWith()
替换整个DOM元素。您要做的是更改单个文本节点的一些文本,该文本节点是元素的一部分。 DOM或jQuery中没有单个函数可以仅更改文本节点的一部分或元素文本的一部分。您这样做的唯一方法是获取文本,进行所需的更改并将其重新设置。
你可以创建自己的jQuery方法来做到这一点。
$.fn.replaceText = function(srcText, replacementText) {
return this.each(function() {
var item = $(this);
var txt = item.text();
item.text(txt.replace(srcText, replacementText));
});
}
答案 1 :(得分:0)
使用.replaceWith()
或.text('mystring')
.html('my string that may have <abbr>HTML</abbr> in it')
编辑 - 我想我误解了你想要做的事情。看起来你只是想用HTML包装一段文本。您最好的选择是使用您在评论中提到的.replace()
功能。