Bug Tracker

Modify

Ticket #3270 (closed bug: worksforme)

Opened 6 years ago

Last modified 3 years ago

jQuery().wrapInner() prepends instead of wrapping when html structure contains text nodes

Reported by: jtate Owned by: flesler
Priority: major Milestone: 1.3
Component: core Version: 1.2.6
Keywords: Cc:
Blocking: Blocked by:

Description

For example:

jQuery('p').wrapInner('<strong/>');

would work fine. However

jQuery('p').wrapInner('<strong> </strong>')

will produce html output that looks like:

<p><strong> </strong>INNER TEXT</p>

when it meets a paragraph element with the Text contents of "INNER TEXT".

Attachments

3270.patch Download (630 bytes) - added by dmethvin 5 years ago.

Change History

comment:1 Changed 5 years ago by dmethvin

The problem is this loop in wrapAll:

	while ( elem.firstChild )
		elem = elem.firstChild;

It's trying to find the deepest point in the wrapping nodes to know where to append the nodes in the jQuery object. However, if any of the firstChild nodes in the wrapper are text nodes, it won't work right. I've attached a patch that tries to find the leftmost non-text node.

Changed 5 years ago by dmethvin

comment:2 Changed 5 years ago by dmethvin

  • Owner set to flesler

comment:3 Changed 3 years ago by dmethvin

  • Status changed from new to closed
  • Resolution set to worksforme

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.