Skip to main content

Bug Tracker

Side navigation

#5799 closed bug (fixed)

Opened January 14, 2010 07:53AM UTC

Closed January 26, 2010 12:16AM UTC

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)
Change History (2)

Changed January 14, 2010 07:58AM UTC by ajpiano comment:1

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

Changed January 26, 2010 12:16AM UTC by john comment:2

component: unfilledcore
resolution: → fixed
status: newclosed