diff options
author | jeresig <jeresig@gmail.com> | 2010-01-25 19:16:23 -0500 |
---|---|---|
committer | jeresig <jeresig@gmail.com> | 2010-01-25 19:16:23 -0500 |
commit | 9f17e70ae95cc2d4b945bc94283b87cc5b8b23db (patch) | |
tree | 322953877a76dc4b307c01b0c324d5355d2ddb96 | |
parent | 55a64cf095b295d334010c6e0a00863f307caffa (diff) | |
download | jquery-9f17e70ae95cc2d4b945bc94283b87cc5b8b23db.tar.gz jquery-9f17e70ae95cc2d4b945bc94283b87cc5b8b23db.zip |
Make work wrapInner(fn) work consistently. Fixes #5799.
-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); |