如何在不使用Jquery获取降序元素文本节点的情况下检索元素的textnode?

时间:2010-02-26 16:45:53

标签: javascript jquery

<a href="#">Domain name<span class="value">2</span></a>

我只想检索文本“域名”。

我尝试过使用$('a')。text(),但这也会在降序的SPAN标记内得到文本。有没有办法只选择A标签内的第一个文本节点?

我无法弄清楚如何。

.contents('not:(span)')也不起作用。

3 个答案:

答案 0 :(得分:1)

您可以使用DOM方法:

var el = document.getElementById("your_element_id");
var child, textBits = [];
for (var i = 0; i < el.childNodes.length; ++i) {
    child = el.childNodes[i];
    if (child.nodeType == 3) {
        textBits.push(child.nodeValue);
    }
}
window.alert( textBits.join("") );

答案 1 :(得分:0)

我找到了办法!

$('a').get(0).firstElementChild.firstChild.wholeText;

答案 2 :(得分:0)

根据我对this问题的回答,这应该适合您。 this.nodeType == 3确定它是文本节点。目前,这将获得所有文本节点的文本(但将适用于您的示例)。如果在span之后有文本节点,则必须修改它才能获得第一个。

var text = $('a') 
    .contents() 
    .filter(function() { 
        return this.nodeType == 3;
        //return this.nodeType == Node.TEXT_NODE;  this works unless using IE 7
    })
    .text();