jQuery的.text()在内部是如何工作的?

Ala*_* H. 12 javascript jquery

我很快就试图找到在jQuery的源实施,但只找到这个,它实际上并不似乎完全定义它.

来自jQuery Source

jQuery.fn.extend({
    text: function( text ) {
        if ( jQuery.isFunction(text) ) {
            return this.each(function() {
                return jQuery(this).text( text.call(this) );
            });
        }

        if ( typeof text !== "object" && text !== undefined ) {
            return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
        }

        return jQuery.getText( this );
    },
Run Code Online (Sandbox Code Playgroud)

谁知道?

澄清:
我知道如何使用它.我只是想知道如何在jQuery不可用时获取jQuery元素的文本.

Dog*_*ert 11

jQuery.fn.text可以用于3个不同的目的,因为您粘贴的源清楚地显示.您正在寻找的案例是第三个 - 返回元素的文本值.

jQuery使用jQuery.text()方法获取元素的文本值,jQuery.text指向Sizzle.getText()

jQuery.text = Sizzle.getText;
Run Code Online (Sandbox Code Playgroud)

这是getText函数的定义.

// 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;
};
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/cBsDN/

  • 如果可以的话,Sizzle现在似乎使用`elem.textContent`. (4认同)

use*_*716 10

var text = element.innerText || element.textContent;
Run Code Online (Sandbox Code Playgroud)

示例: http ://jsfiddle.net/XnL7H/1/