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

我很快就试图在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 ); }, 

谁知道?

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

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

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

 jQuery.text = Sizzle.getText; 

这是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; }; 

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

 var text = element.innerText || element.textContent; 

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

它使用Sizzle 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; }; 

http://sizzlejs.com/

假设您知道如何使用jQuery获取JavaScript中的元素。

 var el = document.getElementById("my-element"); 

然后你只需要使用两个属性innerTextinnerHTML可用的属性。 所以要获得你使用的文本:

 var text = el.innerText; 

或者要获取HTML,您可以:

 var html = el.innerHTML; 

如果您知道createTextNode和createElement的不同,则可以了解如何使用jquery.text。

text函数创建DOM文本节点。 浏览器将节点的值作为文本。