Fix for #907
[jquery.git] / src / jquery / jquery.js
index b720954..e58f895 100644 (file)
@@ -38,7 +38,7 @@ var jQuery = function(a,c) {
        // Handle HTML strings
        if ( typeof a  == "string" ) {
                // HANDLE: $(html) -> $(array)
-               var m = /^[^<]*(<(.|\n)+>)[^>]*$/.exec(a);
+               var m = /^[^<]*(<(.|\s)+>)[^>]*$/.exec(a);
                if ( m )
                        a = jQuery.clean( [ m[1] ] );
                
@@ -259,7 +259,6 @@ jQuery.fn = jQuery.prototype = {
        pushStack: function( a ) {
                var ret = jQuery(a);
                ret.prevObject = this;
-               //return ret.setArray( a );
                return ret;
        },
        
@@ -1229,6 +1228,11 @@ jQuery.extend({
                return !!fn && typeof fn != "string" &&
                        typeof fn[0] == "undefined" && /function/i.test( fn + "" );
        },
+       
+       // check if an element is in a XML document
+       isXMLDoc: function(elem) {
+               return elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
+       },
 
        nodeName: function( elem, name ) {
                return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
@@ -1282,10 +1286,9 @@ jQuery.extend({
                        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) )
-                               return value + "px";
-
-                       return value;
+                       return value && value.constructor == Number && type == "curCSS" && !exclude.test(prop) ?
+                               value + "px" :
+                               value;
        },
 
        className: {
@@ -1478,7 +1481,7 @@ jQuery.extend({
        },
        
        attr: function(elem, name, value){
-               var fix = {
+               var fix = jQuery.isXMLDoc(elem) ? {} : {
                        "for": "htmlFor",
                        "class": "className",
                        "float": jQuery.browser.msie ? "styleFloat" : "cssFloat",
@@ -1509,6 +1512,8 @@ jQuery.extend({
                // Mozilla doesn't play well with opacity 1
                if ( name == "opacity" && jQuery.browser.mozilla && value == 1 )
                        value = 0.9999;
+                       
+               // 
 
                // Certain attributes only work when accessed via the old DOM 0 way
                if ( fix[name] ) {
@@ -1520,7 +1525,8 @@ jQuery.extend({
 
                // IE elem.getAttribute passes even for style
                else if ( elem.tagName ) {
-                       if ( value != undefined ) elem.setAttribute( name, value );
+                       if ( value != undefined ) 
+                               elem.setAttribute( name, value );
                        return elem.getAttribute( name );
 
                } else {