我在表单上有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());
但它没有显示任何内容。
答案 0 :(得分:3)
答案 1 :(得分:2)
如果您只想删除包装文本,可能会有效:
$("#foo *").remove();
我误解了你的问题吗?
答案 2 :(得分:2)
答案 3 :(得分:1)
请改为尝试:
alert($("div#foo").clone().children().remove().end().text());
希望这会有所帮助!!
答案 4 :(得分:0)
获取纯文本的另一种方法是使用这些jQuery方法 - &gt; contents()和filter()。
描述:获取匹配集中每个元素的子元素 元素,包括文字和评论节点。
因此我们可以获得DIV和#text节点。
将匹配元素集减少到与选择器匹配的元素集 通过功能测试。
在功能测试中,我们只保留我们想要的文本节点(nodeType == 3,即文本)。 所以,最后,我们有:
$("#foo").contents().filter(function(){ return this.nodeType == 3}).text().trim();
(trim()在这里不会选择样本中的所有换行符,因为它们也是文本)
<强> demo js fiddle 强>