diff --git a/src/manipulation.js b/src/manipulation.js
index 4d0ffd05..37a8cfdf 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 b0a1c71a..bbf9a3a2 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('
');
+ var result = jQuery('#first').wrapInner(val(''));
+ 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("footest
test2
").children().length;
+ var result = jQuery('#first').wrapInner(val(''));
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.wrapInner("");
+ div.wrapInner(val(""));
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);