Fix for bug #1549, where the DOM conversion of <code/> and similar elements would...
[jquery.git] / src / jquery / jquery.js
index 4f3e03e..038323a 100644 (file)
@@ -633,6 +633,11 @@ jQuery.extend({
                        
                        // Convert html string into DOM nodes
                        if ( typeof arg == "string" ) {
+                               // Fix "XHTML"-style tags in all browsers
+                               arg = arg.replace(/(<(\w+)[^>]*?)\/>/g, function(m, all, tag){
+                                       return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i)? m : all+"></"+tag+">";
+                               });
+
                                // Trim whitespace, otherwise indexOf won't work as expected
                                var s = jQuery.trim(arg).toLowerCase(), div = doc.createElement("div"), tb = [];
 
@@ -728,9 +733,15 @@ jQuery.extend({
                // IE elem.getAttribute passes even for style
                else if ( elem.tagName ) {
 
-                       if ( value != undefined ) elem.setAttribute( name, value );
+                       if ( value != undefined ) {
+                               if ( name == "type" && jQuery.nodeName(elem,"input") && elem.parentNode )
+                                       throw "type property can't be changed";
+                               elem.setAttribute( name, value );
+                       }
+
                        if ( jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem) ) 
                                return elem.getAttribute( name, 2 );
+
                        return elem.getAttribute( name );
 
                // elem is actually elem.style ... set the style