From b30af34f28074b491929445f5aad3d62c63e772f Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 17 Nov 2009 14:52:08 -0500 Subject: [PATCH] Added support for .text() on text nodes. Fixes #5525. --- src/manipulation.js | 20 +++++++++++--------- test/unit/manipulation.js | 5 ++++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/manipulation.js b/src/manipulation.js index 1699f68..2a6b9dc 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -31,19 +31,21 @@ if ( !jQuery.support.htmlSerialize ) { jQuery.fn.extend({ text: function( text ) { - if ( typeof text !== "object" && text !== undefined ) + if ( typeof text !== "object" && text !== undefined ) { return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + } var ret = ""; - jQuery.each( text || this, function(){ - jQuery.each( this.childNodes, function(){ - if ( this.nodeType !== 8 ) { - ret += this.nodeType !== 1 ? - this.nodeValue : - jQuery.fn.text( [ this ] ); - } - }); + jQuery.each( this, function() { + // Get the text from text nodes and CDATA nodes + if ( this.nodeType === 3 || this.nodeType === 4 ) { + ret += this.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( this.nodeType !== 8 ) { + ret += jQuery.fn.text.call( this.childNodes ); + } }); return ret; diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 0f11de4..4997634 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -4,9 +4,12 @@ var bareObj = function(value) { return value; }; var functionReturningObj = function(value) { return (function() { return value; }); }; test("text()", function() { - expect(1); + expect(2); var expected = "This link has class=\"blog\": Simon Willison's Weblog"; equals( jQuery('#sap').text(), expected, 'Check for merged text of more then one element.' ); + + // Check serialization of text values + equals( jQuery(document.createTextNode("foo")).text(), "foo", "Text node was retreived from .text()." ); }); var testWrap = function(val) { -- 1.7.10.4