0

可能重复:
jQuery 的 .text() 在内部是如何工作的?

我正在寻找相当于的文本innerHTML,即

<p>Hello, <i>World!</i></p>

然后innerText(p)应该返回Hello, World!

注意:我知道 jQuery 的text()功能。我想知道它是如何实现的,这样我就可以对某些节点进行特殊处理,比如插入额外的空白。

4

3 回答 3

2

这是 getText() 的来源:取自问题:jQuery's .text() 如何在内部工作?

// Utility function for retreiving the text value of an array of DOM nodes
Sizzle.getText = function( elems ) {
    var ret = "", elem;

    for ( var i = 0; elems[i]; i++ ) {
        elem = elems[i];

        // Get the text from text nodes and CDATA nodes
        if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
            ret += elem.nodeValue;

        // Traverse everything else, except comment nodes
        } else if ( elem.nodeType !== 8 ) {
            ret += Sizzle.getText( elem.childNodes );
        }
    }

    return ret;
};
于 2012-10-15T11:59:28.300 回答
1

这个怎么样?

var getInnerText = function (element) {
    var nodes = element.childNodes,
        i = 0,
        len = nodes.length,
        text = '';
    for (; i < len; i++) {
        if (nodes[i].nodeType === 3 || nodes[i].nodeType === 4) {
            // 3 means text node, 4 means cdata
            text += nodes[i].nodeValue;
        } else {
            text += getInnerText(nodes[i]);
        }
    }
    return text;
};

然后:var innerText = getInnerText(myElement);

jsfiddle

于 2012-10-15T12:09:24.240 回答
0

使用 innerText 属性而不是 innetHTML。

例子...

<html>
<body>
<p id="myP">Sample Text inside a <b>p</b> element <a href="#"> this is a link </a></p>
<button onclick="alert(myP.innerHTML);">InnerHTML</button>
<button onclick="alert(myP.innerText);">InnerText</button>
</body>
</html>
于 2012-10-15T12:07:59.267 回答