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'.
<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'/>");
the attachment is the same file twice, i accidentally double clicked and it uploaded two copies.