Updated the licensing information.
[jquery.git] / src / jquery / jquery.js
index da0e582..7a8a013 100644 (file)
@@ -2,8 +2,7 @@
  * jQuery - New Wave Javascript
  *
  * Copyright (c) 2006 John Resig (jquery.com)
- * Licensed under the MIT License:
- *   http://www.opensource.org/licenses/mit-license.php
+ * Dual licensed under the MIT and GPL licenses.
  *
  * $Date$
  * $Rev$
@@ -36,7 +35,7 @@ function jQuery(a,c) {
        if ( a && a.constructor == Function && jQuery.fn.ready )
                return jQuery(document).ready(a);
 
-       // Make sure t hat a selection was provided
+       // Make sure that a selection was provided
        a = a || jQuery.context || document;
 
        /*
@@ -60,11 +59,11 @@ function jQuery(a,c) {
 
        // Watch for when a jQuery object is passed as the selector
        if ( a.jquery )
-               return a;
+               return $( jQuery.merge( a, [] ) );
 
        // Watch for when a jQuery object is passed at the context
        if ( c && c.jquery )
-               return jQuery(c.get()).find(a);
+               return $( c ).find(a);
        
        // If the context is global, return a new object
        if ( window == this )
@@ -316,7 +315,7 @@ jQuery.fn = jQuery.prototype = {
                        // Look for the case where we're accessing a style value
                        jQuery[ type || "attr" ]( this[0], key );
        },
-       
+
        /**
         * Access a style property on the first matched element.
         * This method makes it easy to retreive a style property value
@@ -559,6 +558,12 @@ jQuery.fn = jQuery.prototype = {
                        return jQuery.find(t,a);
                }), arguments );
        },
+
+       clone: function(deep) {
+               return this.pushStack( jQuery.map( this, function(a){
+                       return a.cloneNode( deep != undefined ? deep : true );
+               }), arguments );
+       },
        
        /**
         * Removes all elements from the set of matched elements that do not 
@@ -726,7 +731,7 @@ jQuery.fn = jQuery.prototype = {
                return this.each(function(){
                        var obj = this;
                        
-                       if ( table && this.nodeName == "TABLE" ) {
+                       if ( table && this.nodeName == "TABLE" && a[0].nodeName != "THEAD" ) {
                                var tbody = this.getElementsByTagName("tbody");
 
                                if ( !tbody.length ) {
@@ -849,7 +854,7 @@ jQuery.extend({
                });
        
                jQuery.each( jQuery.macros.css, function(i,n){
-                       jQuery.fn[ i ] = function(h) {
+                       jQuery.fn[ n ] = function(h) {
                                return h == undefined ?
                                        ( this.length ? jQuery.css( this[0], n ) : null ) :
                                        this.css( n, h );
@@ -958,30 +963,36 @@ jQuery.extend({
                var r = [];
                for ( var i = 0; i < a.length; i++ ) {
                        if ( a[i].constructor == String ) {
+
+                               var table = "";
        
-                               if ( !a[i].indexOf("<tr") ) {
-                                       var tr = true;
+                               if ( !a[i].indexOf("<thead") || !a[i].indexOf("<tbody") ) {
+                                       table = "thead";
+                                       a[i] = "<table>" + a[i] + "</table>";
+                               } else if ( !a[i].indexOf("<tr") ) {
+                                       table = "tr";
                                        a[i] = "<table>" + a[i] + "</table>";
                                } else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) {
-                                       var td = true;
+                                       table = "td";
                                        a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>";
                                }
        
                                var div = document.createElement("div");
                                div.innerHTML = a[i];
        
-                               if ( tr || td ) {
-                                       div = div.firstChild.firstChild;
-                                       if ( td ) div = div.firstChild;
+                               if ( table ) {
+                                       div = div.firstChild;
+                                       if ( table != "thead" ) div = div.firstChild;
+                                       if ( table == "td" ) div = div.firstChild;
                                }
        
                                for ( var j = 0; j < div.childNodes.length; j++ )
                                        r.push( div.childNodes[j] );
-                       } else if ( a[i].jquery || a[i].length && !a[i].nodeType )
-                               for ( var k = 0; k < a[i].length; k++ )
-                                       r.push( a[i][k] );
-                       else if ( a[i] !== null )
-                               r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) );
+                               } else if ( a[i].jquery || a[i].length && !a[i].nodeType )
+                                       for ( var k = 0; k < a[i].length; k++ )
+                                               r.push( a[i][k] );
+                               else if ( a[i] !== null )
+                                       r.push( a[i].nodeType ? a[i] : document.createTextNode(a[i].toString()) );
                }
                return r;
        },
@@ -1019,7 +1030,8 @@ jQuery.extend({
                        // Form elements
                        enabled: "!a.disabled",
                        disabled: "a.disabled",
-                       checked: "a.checked"
+                       checked: "a.checked",
+                       selected: "a.selected"
                },
                ".": "jQuery.className.has(a,m[2])",
                "@": {
@@ -2360,6 +2372,11 @@ jQuery.macros = {
        },
 
        each: {
+
+               removeAttr: function( key ) {
+                       this.removeAttribute( key );
+               },
+
                /**
                 * Displays each of the set of matched elements if they are hidden.
                 *