From d259ec1a93ea087d76c02009eccaa42786f737bb Mon Sep 17 00:00:00 2001
From: John Resig <jeresig@gmail.com>
Date: Tue, 4 Sep 2007 04:34:48 +0000
Subject: [PATCH] Fix for bug #1549, where the DOM conversion of <code/> and
 similar elements would fail. This forces it to work
 correctly in all browsers.

---
 src/jquery/coreTest.js |    9 ++++++++-
 src/jquery/jquery.js   |    5 +++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js
index 794bb5a..18fed64 100644
--- a/src/jquery/coreTest.js
+++ b/src/jquery/coreTest.js
@@ -12,7 +12,7 @@ test("Basic requirements", function() {
 });
 
 test("$()", function() {
-	expect(2);
+	expect(5);
 	
 	var main = $("#main");
 	isSet( $("div p", main).get(), q("sndp", "en", "sap"), "Basic selector with jQuery object as context" );
@@ -29,6 +29,13 @@ test("$()", function() {
 		pass = false;
 	}
 	ok( pass, "$('&lt;tag&gt;') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );*/
+
+	var code = $("<code/>");
+	equals( code.length, 1, "Correct number of elements generated for code" );
+	var img = $("<img/>");
+	equals( img.length, 1, "Correct number of elements generated for img" );
+	var div = $("<div/><hr/><code/><b/>");
+	equals( div.length, 4, "Correct number of elements generated for div hr code b" );
 });
 
 test("isFunction", function() {
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index 09e714c..038323a 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -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 = [];
 
-- 
1.7.10.4