aboutsummaryrefslogtreecommitdiffstats
path: root/src/jquery/jquery.js
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-08-31 05:33:43 +0000
committerJohn Resig <jeresig@gmail.com>2007-08-31 05:33:43 +0000
commite3263063e4ef3d2e0ee6b74b9da573bf40e87668 (patch)
tree8d4db4428dd5d7ff8172e1b0e0c53720b0abe6f6 /src/jquery/jquery.js
parent85afa7c1ba32e2e867b89e4222a4d27ea97dd20d (diff)
downloadjquery-e3263063e4ef3d2e0ee6b74b9da573bf40e87668.tar.gz
jquery-e3263063e4ef3d2e0ee6b74b9da573bf40e87668.zip
Added support for .wrapInner() and .wrapAll() - and re-wrote .wrap() to use .wrapAll(). (Fixes bug #1296)
Diffstat (limited to 'src/jquery/jquery.js')
-rw-r--r--src/jquery/jquery.js43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index 7cd07306b..8f8a1763d 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -163,7 +163,7 @@ jQuery.fn = jQuery.prototype = {
if ( m && (m[1] || !c) ) {
// HANDLE: $(html) -> $(array)
if ( m[1] )
- a = jQuery.clean( [ m[1] ] );
+ a = jQuery.clean( [ m[1] ], c );
// HANDLE: $("#id")
else {
@@ -646,27 +646,32 @@ jQuery.fn = jQuery.prototype = {
* @param Element elem A DOM element that will be wrapped around the target.
* @cat DOM/Manipulation
*/
- wrap: function() {
- // The elements to wrap the target around
- var a, args = arguments;
+ wrapAll: function(html) {
+ if ( this[0] )
+ // The elements to wrap the target around
+ jQuery(html, this[0].ownerDocument)
+ .clone()
+ .insertBefore(this[0])
+ .map(function(){
+ var elem = this;
+ while ( elem.firstChild )
+ elem = elem.firstChild;
+ return elem;
+ })
+ .append(this);
- // Wrap each of the matched elements individually
- return this.each(function(){
- if ( !a )
- a = jQuery.clean(args, this.ownerDocument);
-
- // Clone the structure that we're using to wrap
- var b = a[0].cloneNode(true);
-
- // Insert it before the element to be wrapped
- this.parentNode.insertBefore( b, this );
+ return this;
+ },
- // Find the deepest point in the wrap structure
- while ( b.firstChild )
- b = b.firstChild;
+ wrapInner: function(html) {
+ return this.each(function(){
+ jQuery(this).contents().wrapAll(html);
+ });
+ },
- // Move the matched element to within the wrap structure
- b.appendChild( this );
+ wrap: function(html) {
+ return this.each(function(){
+ jQuery(this).wrapAll(html);
});
},