获取元素的内容而不显示其子元素
我有一个温和的偏好,在纯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; }
您可以使用此函数创建一个包装函数,使用此函数来累积多个文本值。