我在表单上有 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());
但它不显示任何东西。
如果您只想删除包装的文本,也许这会起作用:
$("#foo *").remove();
我误解了你的问题吗?
试试这个:
alert($("div#foo").clone().children().remove().end().text());
希望这会有所帮助!
另一种获取纯文本的方法是使用这些 jQuery 方法 -> contents() 和 filter()。
内容[来源:文档]:
描述:获取匹配元素集中每个元素的子元素,包括文本和注释节点。
所以我们可以同时得到 DIV 和 #text 节点。
过滤器[来源:文档]:
将匹配元素集减少为匹配选择器或 通过函数测试的元素集。
在函数测试中,我们将只保留我们想要的文本节点(nodeType == 3,即文本)。所以,最后,我们有:
$("#foo").contents().filter(function(){ return this.nodeType == 3}).text().trim();
( trim() 在这里不选择样本中的所有换行符,因为它们也是文本)