Skip to main content

Bug Tracker

Side navigation

#3417 closed bug (invalid)

Opened September 26, 2008 10:10PM UTC

Closed September 27, 2008 03:51PM UTC

.text() method doesn't work as expected

Reported by: dimik Owned by:
Priority: major Milestone: 1.3
Component: core Version: 1.2.6
Keywords: text Cc:
Blocked by: Blocking:
Description

i suppose when use the $('div.someclass').text('') - it will empty div's textNode.

But it also remove all elementNode inside.

Attachments (0)
Change History (3)

Changed September 26, 2008 10:15PM UTC by dimik comment:1

textarea formatting cut my quotes

i mean $('div.someclass').text('empty value or some text here')

Changed September 26, 2008 10:23PM UTC by dimik comment:2

i think it in the line 188:

return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );

may be use something like this instead:

jQuery.each( this, function(){

jQuery.each( this.childNodes, function(){

if ( this.nodeType == 3 )

this.parentNode.removeChild(this);

});

});

return this.append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );

Changed September 27, 2008 03:51PM UTC by scott.gonzal comment:3

resolution: → invalid
status: newclosed

This is intended behavior. Think about the text that should be returned for this HTML:

<div>foo<span>bar</span>baz</div>

If you were to try to change the text of that div without changing the descendant elements, you wouldn't have the control you need. Another way to think about it is that if you set the text of an element and then immediately get the text of that element, you shouldn't get a result that differs from what you just set.