使用jQuery获取span元素后的文本

54

我有这段HTML代码

<div id="mydiv">
    <div>
        <span>Text inside span</span>
        Text next to span
    </div>
    <div>
        Contents inside the 2nd div element...
    </div>
</div>

我想获取旁边的文本。我尝试了这段 JQuery 代码

var a = $('#mydiv div').first().find('span').parent().text();
alert(a);

上面 jQuery 代码的输出结果如下:

Text inside span
Text next to span

如何仅获取旁边的文本


1
请参见以下网址:https://dev59.com/xnVC5IYBdhLWcg3wbgdS - nikc.org
帖子对我来说太高级了,我无法理解。非常抱歉。 - Rash Amed
这是你之前问过的同一个问题。 - nikc.org
可能是重复的问题:使用 .text() 仅检索未嵌套在子标记中的文本 - Evan Carroll
4个回答

62

var a = $('#mydiv div').first().contents().filter(function() {
  return this.nodeType == 3;
}).text();

console.log(a);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="mydiv">
  <div>
    <span>Text inside span</span> 
    Text next to span
  </div>
  <div>
    Contents inside the 2nd div element...
  </div>
</div>

这将获取所选 div 的内容,并过滤匹配的集合,仅返回 nodeType == 3 的元素,这些元素是文本节点。


12

我是通过这种方式得到它的:

$('#mydiv div').first().contents().eq(1).text();

9
请使用以下代码:
 $('#myDiv')
  .contents()
  .filter(function() {
    return this.nodeType == Node.TEXT_NODE;
  }).text();

5
最好使用 nodeType == 3 而不是 TEXT_NODE 常量,因为 IE 不支持后者。 - James Allardice
@James 谢谢,我之前不知道节点类型的整数值。 - Tushar Ahirrao

0
使用 Node.nextSibling
let jqElt_SearchRegion = $('#mydiv div').first();
let jqElt_SearchPoint = jqElt_SearchRegion.find('span');

let node_Sibling = jqElt_SearchPoint[0].nextSibling; // https://developer.mozilla.org/en-US/docs/Web/API/Node/nextSibling
console.log(node_Sibling.textContent); // Text next to span.

(如果jQuery不是必需的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接