我有以下代码..
<span class="under">
texthere
<ul class="list">
<li> list text here</li>
</ul>
</span>
当我运行$(".under").text()
时,我会在此处获得“textherelist文字”。
我已经尝试了$(".under :not(.list)").text()
并得到了定义。
我也没有得到$(".under").not(".list").text()
所以我的最后一次尝试是$(".list").parent().text()
这会产生textherelist文本
我在哪里遇到这么简单的问题?
P.S。不一定是jQuery可以是JavaScript,如果它更简单。
通缉结果:texthere
答案 0 :(得分:3)
所以我猜你是在文字之后:texthere
?
var elem = $(".under").clone(),
text = $.trim(elem.children().remove().end().text());
克隆元素,删除所有子元素并获取剩余的文本。
答案 1 :(得分:2)
来自docs:
描述:获取集合中每个元素的组合文本内容 匹配元素,包括它们的后代。
所以是的,这种行为是预料之中的。
您可以尝试此操作以仅获取选择器的直接文本节点:
$('.under').contents().filter(function(){ return(this.nodeType == 3); }).text()
说明:
.contents()
(docs)返回选择器的子节点,包括textnodes
描述:获取匹配集中每个元素的子元素 元素,包括文本和注释节点。
.filter()
接受回调只返回您需要的内容,基于此,您只使用nodeType == 3
,这是一个文本节点。
答案 2 :(得分:2)