.text()
/textContent
不包含 HTML 实体(例如
),这些实体以文字字符形式返回。这是一个使用不间断空格Unicode 转义序列的正则表达式:
var newStr = $('#myDiv').text().replace(/\u00A0/g, '');
$('#myText').val(newStr);
演示
也可以在正则表达式中使用文字不间断空格字符而不是转义序列,但是我发现在这种情况下转义序列更清晰。不过,没有什么是评论解决不了的。
也可以使用.html()
/innerHTML
来检索包含 HTML 实体的 HTML,如@Dystroy 的回答。
以下是我的原始答案,我误解了 OP 的用例。我会把它留在这里,以防有人需要
从 DOM 元素的文本内容中删除
[...] 但是,请注意,重新设置元素的.html()
/innerHTML
意味着丢弃所有侦听器和与之关联的数据。
所以这里有一个递归解决方案,它只改变文本节点的文本内容,不重新解析 HTML,也没有任何副作用。
function removeNbsp($el) {
$el.contents().each(function() {
if (this.nodeType === 3) {
this.nodeValue = this.nodeValue.replace(/\u00A0/g, '');
} else {
removeNbsp( $(this) );
}
});
}
removeNbsp( $('#myDiv') );
演示