获取元素的内容而不显示其子元素

我有一个温和的偏好,在纯JS中解决这个问题,但如果jQuery版本更简单,那么jQuery也很好。 有效的情况是这样的

 The info I want  I don't want any of this nonsense   

我实际上想得到
The info I want
但不是
The info I want I don't want any of this nonsense
我特别不想要
The info I want I don't want any of this nonsense
不幸的是,我现在得到的……

我该怎么办?

仅限js:

尝试一下: http //jsfiddle.net/g4tRn/

 var result = document.getElementById('thisone').firstChild.nodeValue; ​alert(result);​ 

使用jQuery:

试一试: http //jsfiddle.net/g4tRn/1

 var result = $('#thisone').contents().first().text(); alert(result);​ 

奖金:

如果您希望获得外部中的其他文本节点,则可以执行以下操作:

试试吧: http //jsfiddle.net/g4tRn/4

 var nodes = document.getElementById('thisone').childNodes; var result = ''; for(var i = 0; i < nodes.length; i++) { if(nodes[i].nodeType == 3) { // If it is a text node, result += nodes[i].nodeValue; // add its text to the result } } alert(result);​ 

如果你只想要第一个孩子那么它就相当简单了。 如果您正在寻找第一个纯文本元素,那么此代码将需要一些修改。

 var text = document.getElementById('thisone').firstChild.nodeValue; alert(text); 

你尝试过这样的事吗?

 var thisone = $("#thisone").clone(); thisone.children().remove(); var mytext = thisone.html(); 

来自: http : //viralpatel.net/blogs/2011/02/jquery-get-text-element-without-child-element.html

  $("#foo") .clone() //clone the element .children() //select all the children .remove() //remove all the children .end() //again go back to selected element .text(); //get the text of element 

纯JavaScript

在这个纯JavaScript示例中,我考虑了可以与其他类型的节点交错 的多个文本节点可能性 。 从调用/客户端代码传递包含NodeList

 function getText (nodeList, target) { var trueTarget = target - 1; var length = nodeList.length; // Because you may have many child nodes. for (var i = 0; i < length; i++) { if ((nodeList[i].nodeType === Node.TEXT_NODE) && (i === trueTarget)) { return nodeList.childNodes[i].nodeValue; } } return null; } 

您可以使用此函数创建一个包装函数,使用此函数来累积多个文本值。