使用jquery清除div内容但保留纯文本

时间:2012-09-15 17:30:29

标签: jquery html dom

我在表单上有div:

<div id="foo">
<div>koko</div>
<div>lala</div>
Plain text here
<div>Another div</div>
</div>

我想使用jquery来保留“纯文本”,但不显示其他div中的任何其他内部元素。

我尝试使用这样的.not

alert($("#foo).not("div").text());

但它没有显示任何内容。

5 个答案:

答案 0 :(得分:3)

您需要做的就是:

$('#foo *').remove();​​​​​​​​​

选择器选择#foo中的任何元素,并且只保留您查找的文本。

DEMO

答案 1 :(得分:2)

如果您只想删除包装文本,可能会有效:

$("#foo *").remove();

我误解了你的问题吗?

答案 2 :(得分:2)

试试这个:

var text = $('#foo').clone().find('*').remove().end().text()

http://jsfiddle.net/LtMHE/

答案 3 :(得分:1)

请改为尝试:

alert($("div#foo").clone().children().remove().end().text());

希望这会有所帮助!!

答案 4 :(得分:0)

获取纯文本的另一种方法是使用这些jQuery方法 - &gt; contents()和filter()。

内容[source: doc]

  

描述:获取匹配集中每个元素的子元素   元素,包括文字和评论节点

因此我们可以获得DIV和#text节点。

过滤[source: doc]

  

将匹配元素集减少到与选择器匹配的元素集   通过功能测试

在功能测试中,我们只保留我们想要的文本节点(nodeType == 3,即文本)。 所以,最后,我们有:

$("#foo").contents().filter(function(){ return this.nodeType == 3}).text().trim();

(trim()在这里不会选择样本中的所有换行符,因为它们也是文本)

<强> demo js fiddle

相关问题