diff options
-rw-r--r-- | src/manipulation.js | 6 | ||||
-rw-r--r-- | test/unit/manipulation.js | 22 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/manipulation.js b/src/manipulation.js index 4d0ffd057..37a8cfdfe 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -77,6 +77,12 @@ jQuery.fn.extend({ }, wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + return this.each(function() { var self = jQuery( this ), contents = self.contents(); diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index b0a1c71af..bbf9a3a25 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -140,22 +140,29 @@ test("wrapAll(String|Element)", function() { }); var testWrapInner = function(val) { - expect(8); + expect(11); var num = jQuery("#first").children().length; - var result = jQuery('#first').wrapInner('<div class="red"><div id="tmp"></div></div>'); + var result = jQuery('#first').wrapInner(val('<div class="red"><div id="tmp"></div></div>')); + equals( jQuery("#first").children().length, 1, "Only one child" ); + ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); + equals( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); + + reset(); + var num = jQuery("#first").html("foo<div>test</div><div>test2</div>").children().length; + var result = jQuery('#first').wrapInner(val('<div class="red"><div id="tmp"></div></div>')); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); equals( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); reset(); var num = jQuery("#first").children().length; - var result = jQuery('#first').wrapInner(document.getElementById('empty')); + var result = jQuery('#first').wrapInner(val(document.getElementById('empty'))); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is("#empty"), "Verify Right Element" ); equals( jQuery("#first").children().children().length, num, "Verify Elements Intact" ); var div = jQuery("<div/>"); - div.wrapInner("<span></span>"); + div.wrapInner(val("<span></span>")); equals(div.children().length, 1, "The contents were wrapped."); equals(div.children()[0].nodeName.toLowerCase(), "span", "A span was inserted."); } @@ -164,10 +171,9 @@ test("wrapInner(String|Element)", function() { testWrapInner(bareObj); }); -// TODO: wrapInner uses wrapAll -- get wrapAll working with Function -// test("wrapInner(Function)", function() { -// testWrapInner(functionReturningObj) -// }) +test("wrapInner(Function)", function() { + testWrapInner(functionReturningObj) +}); test("unwrap()", function() { expect(9); |