Bug Tracker

Opened 10 years ago

Closed 10 years ago

#5799 closed bug (fixed)

wrapInner(function): inconsistent with wrapInner(html), callback scope is broken

Reported by: ajpiano Owned by:
Priority: major Milestone: 1.4.1
Component: core Version: 1.4
Keywords: Cc:
Blocked by: Blocking:

Description

wrapInner(function) does not have the same effect on an element as wrapInner(html), etc. Each of the first-child elements - including textnodess - gets wrapped individually, rather than, as intended, wrapping the contents into a single element.

As, wrapInner is a shortcut to $(elem).contents().wrapAll(fn), the contents get wrapped, one-by-one, by the beginning of $.fn.wrapAll(); This leads to the wrapInner(fn) callback being executed once for every child element, with the child element as 'this'.

http://jsfiddle.net/ZtBZ2/

<h3>foo<span>bar</span><div>baz</div>bam</h3> <br/> <h3>foo<span>bar</span><div>baz</div>bam</h3>

$("h3:first").wrapInner(function(i) {

console.log(this); return "<strong style='display:block;border:1px solid #000'/>";

}); $("h3:eq(1)").wrapInner("<strong style='display:block;border:1px solid #000'/>");

Attachments (2)

wrapInner.html (909 bytes) - added by ajpiano 10 years ago.
wrapInner.2.html (909 bytes) - added by ajpiano 10 years ago.

Download all attachments as: .zip

Change History (3)

Changed 10 years ago by ajpiano

Attachment: wrapInner.html added

comment:1 Changed 10 years ago by ajpiano

the attachment is the same file twice, i accidentally double clicked and it uploaded two copies.

comment:2 Changed 10 years ago by john

Component: unfilledcore
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.