Fixed issue with .add()ing individual elements - and with .add()ing form elements...
[jquery.git] / src / jquery / jquery.js
index 0b0972e..38c8da3 100644 (file)
@@ -38,14 +38,14 @@ var jQuery = function(a,c) {
        
        // Handle HTML strings
        if ( typeof a  == "string" ) {
+               // HANDLE: $(html) -> $(array)
                var m = /^[^<]*(<.+>)[^>]*$/.exec(a);
-
-               a = m ?
-                       // HANDLE: $(html) -> $(array)
-                       jQuery.clean( [ m[1] ] ) :
+               if ( m )
+                       a = jQuery.clean( [ m[1] ] );
                
-                       // HANDLE: $(expr)
-                       jQuery.find( a, c );
+               // HANDLE: $(expr)
+               else
+                       return new jQuery( c ).find( a );
        }
        
        return this.setArray(
@@ -429,7 +429,7 @@ jQuery.fn = jQuery.prototype = {
                // Look for the case where we're accessing a style value
                if ( key.constructor == String )
                        if ( value == undefined )
-                               return jQuery[ type || "attr" ]( this[0], key );
+                               return this.length && jQuery[ type || "attr" ]( this[0], key ) || undefined;
                        else {
                                obj = {};
                                obj[ key ] = value;
@@ -985,7 +985,10 @@ jQuery.fn = jQuery.prototype = {
        add: function(t) {
                return this.pushStack( jQuery.merge(
                        this.get(),
-                       typeof t == "string" ? jQuery(t).get() : t )
+                       t.constructor == String ?
+                               jQuery(t).get() :
+                               t.length != undefined && !t.nodeName ?
+                                       t : [t] )
                );
        },
 
@@ -1268,7 +1271,7 @@ jQuery.extend({
                                return value.call( elem, [index] );
                                
                        // exclude the following css properties to add px
-                       var exclude = /z-?index|font-?weight|opacity/i;
+                       var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
 
                        // Handle passing in a number to a CSS property
                        if ( value.constructor == Number && type == "curCSS" && !exclude.test(prop) )
@@ -1556,21 +1559,22 @@ jQuery.extend({
        /**
         * Merge two arrays together, removing all duplicates.
         *
-        * The new array is: All the results from the first array, followed
-        * by the unique results from the second array.
+        * The result is the altered first argument with
+        * the unique elements from the second array added.
         *
         * @example $.merge( [0,1,2], [2,3,4] )
         * @result [0,1,2,3,4]
         * @desc Merges two arrays, removing the duplicate 2
         *
-        * @example $.merge( [3,2,1], [4,3,2] )
-        * @result [3,2,1,4]
+        * @example var array = [3,2,1];
+        * $.merge( array, [4,3,2] )
+        * @result array == [3,2,1,4]
         * @desc Merges two arrays, removing the duplicates 3 and 2
         *
         * @name $.merge
         * @type Array
-        * @param Array first The first array to merge.
-        * @param Array second The second array to merge.
+        * @param Array first The first array to merge, the unique elements of second added.
+        * @param Array second The second array to merge into the first, unaltered.
         * @cat JavaScript
         */
        merge: function(first, second) {