<div class="news">
<script type="text/javascript">
some codes
</script>
needed content
<div class="seperator">
unneeded content
</div>
unneeded content2
</div>
我想得到的只是&#34;需要的内容&#34;这里。所以我必须删除脚本标记并获取所有文本直到 div.seperator
如果我只是从根(div.news)得到文本而不包含子元素,我将解决问题或我必须清理子元素的另一种方式。
我该如何处理这个问题。
感谢您的关注。
答案 0 :(得分:4)
您可以使用contents()
和filter()
检索元素中的textNodes。试试这个:
var textNodes = $('.news').contents().filter(function() {
return this.nodeType == 3 && this.nodeValue.trim() != ''
}).get();
console.log(textNodes[0].nodeValue.trim()); // = 'needed content'
答案 1 :(得分:1)
尝试使用父.childNodes
元素DOM
的{{1}},选择索引为.news
的节点
2
或者,在父$(".news")[0].childNodes[2].nodeValue.trim()
for
上使用.news
循环,.childNodes
.previousElementSibling
为.tagName
的节点
"SCRIPT"
var nodes = document.querySelector(".news").childNodes;
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].previousElementSibling
&& nodes[i].previousElementSibling.tagName === "SCRIPT") {
console.log(nodes[i].nodeValue.trim());
break;
}
}
答案 2 :(得分:1)
使用 contents() 获取所有节点,包括文本节点。然后使用.not($('*'))
排除元素节点:
console.log($('.news').contents().not($('*')).text().trim()); //needed content
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="news">
<script type="text/javascript">
some codes
</script>
needed content
<div class="seperator">
unneeded content
</div>
</div>
&#13;
<小时/> 根据您更新的帖子,您可以使用
previousSibling
在.seperator
之前获取文字节点:
console.log($('.seperator')[0].previousSibling.textContent.trim()); //needed content
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="news">
<script type="text/javascript">
some codes
</script>
needed content
<div class="seperator">
unneeded content
</div>
unneeded content2
</div>
&#13;