aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-09-04 04:34:48 +0000
committerJohn Resig <jeresig@gmail.com>2007-09-04 04:34:48 +0000
commitd259ec1a93ea087d76c02009eccaa42786f737bb (patch)
tree776aef5c109a572334b177469e2f992be0246c08
parent7d02f06e036f6a42ccd2c276e9f00a7cd35dc74a (diff)
downloadjquery-d259ec1a93ea087d76c02009eccaa42786f737bb.tar.gz
jquery-d259ec1a93ea087d76c02009eccaa42786f737bb.zip
Fix for bug #1549, where the DOM conversion of <code/> and similar elements would fail. This forces it to work correctly in all browsers.
-rw-r--r--src/jquery/coreTest.js9
-rw-r--r--src/jquery/jquery.js5
2 files changed, 13 insertions, 1 deletions
diff --git a/src/jquery/coreTest.js b/src/jquery/coreTest.js
index 794bb5a29..18fed649e 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 09e714cc5..038323adb 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 = [];