Side navigation
#8348 closed bug (invalid)
Opened February 22, 2011 01:46PM UTC
Closed July 12, 2011 02:12PM UTC
jQuery.fn.text on a textNode
Reported by: | jv215@bath.ac.uk | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | manipulation | Version: | 1.5 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
When calling
$(document.createTextNode("foo")).text("bar").appendTo(document.body)
The text is set to "foo"
instead of "bar"
. One would expect that you can set the text on a textNode using .text()
see jsFiddle: http://jsfiddle.net/Raynos/PU4PX/2/
The problem lies here.
if ( typeof text !== "object" && text !== undefined ) { return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); }
An assumption was made that you can append a text node to a text node. Which is invalid because textNodes can't have children.
One possible solution is checking for this.nodeType === 3
and using elem.nodeValue = text
.
An alternative would be using textNode.data
as seen here: http://jsfiddle.net/PU4PX/3/
I've only tested nodeValue in internet explorer and firefox.
Attachments (0)
Change History (2)
Changed February 24, 2011 03:25PM UTC by comment:1
component: | unfiled → manipulation |
---|---|
priority: | undecided → low |
status: | new → open |
Changed July 12, 2011 02:12PM UTC by comment:2
resolution: | → invalid |
---|---|
status: | open → closed |
Text and comment nodes have only limited support; in most cases we attempt to remove them before performing any operations (for example after a .contents()
method). Don't attempt to wrap a text node in a jQuery object.