如何在jquery中获取innerText而不是textContent

时间:2016-12-02 06:22:59

标签: jquery

我有一个DOM结构,如下所示,不断重复

<label>hello world</label>
<span class="labelVal">
john and tomato enterprise
<span id="more" class="map" onclick="showAbc('3631381');" style="color: #c0392f;">+More</span>
<span id="ent" style="display: none;">
good will and enterprise
</span>
<span class="seeMap" onclick="stop=true;" style="display: none; color: #c0392b;">
some next coming</span>
</span>

我想从john and tomato enterprise抓取html。当我console.log()我能够看到innerText:"john and tomato enterprise +More"我的问题是如何得到它。这是console.log()图片

enter image description here

这是一个小提琴:https://jsfiddle.net/ov09jye4/2/

请看jsfiddle。我不知道如何删除片段(所以它仍然存在)

console.log($('label:contains("hello world")').next('span'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<label>hello world</label>
<span class="labelVal">
john and tomato enterprise
<span id="more" class="seeOnMapLink" onclick="showAbc('3631381');" style="color: #c0392b;">+More</span>
<span id="moreauthorisedDelerDesc3631381" style="display: none;">
good will and enterprise
</span>
<span class="seeMap" onclick="stop=true;" style="display: none; color: #c0392b;">
some next coming</span>
</span>

2 个答案:

答案 0 :(得分:0)

您可以使用.contents()获取包含文本节点的子节点,然后使用.get(index)定位第一个文本节点以获取基础DOM元素并使用nodeValue属性。

//Get the underlying DOM element
var element = $('label:contains("hello world")').next('span').contents().get(0);

//Get the node value
var value = element.nodeValue;

Updated Fiddle

答案 1 :(得分:0)

如果您的HTML块与您显示的完全相同,则可以拾取html内容并将其删除,如下所示:

$('.labelVal').html().replace(/<span.*/,'');