diff --git a/src/jqLite.js b/src/jqLite.js index 1b7f638c2bb6..a3ad88f516c0 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -142,7 +142,7 @@ function camelCase(name) { var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/; var HTML_REGEXP = /<|&#?\w+;/; -var TAG_NAME_REGEXP = /<([\w:]+)/; +var TAG_NAME_REGEXP = /<([\w:-]+)/; var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi; var wrapMap = { diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index 29848825a41a..20bc04b9a41e 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -67,6 +67,47 @@ describe('jqLite', function() { }); + it('should allow construction of an html element containing dashes', function() { + var nodes; + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('MY-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('MY-FOO'); + }); + + + it('should allow construction of an html element containing dashes and starting with characters that match existing html elements', function() { + var nodes; + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('OPTION-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('THEAD-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('COL-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('TR-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('TD-FOO'); + + nodes = jqLite(''); + expect(nodes.length).toEqual(1); + expect(nodes[0].nodeName).toEqual('DIV-FOO'); + }); + + it('should allow construction of html with leading whitespace', function() { var nodes = jqLite(' \n\r \r\n
1
2'); expect(nodes[0].parentNode).toBeDefined();