Permalink
Browse files

Core: Throw an error on $("#") rather than returning 0-length collection

Closes gh-1682

Thanks @goob for the issue report!
  • Loading branch information...
dmethvin committed Dec 3, 2014
1 parent cfe2eae commit 80022c81ce4a07a232afd3c580b0977555a2daec
Showing with 9 additions and 3 deletions.
  1. +2 −1 src/core/init.js
  2. +7 −2 test/unit/core.js
View
@@ -11,7 +11,8 @@ var rootjQuery,
// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
// Shortcut simple #id case for speed
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
init = jQuery.fn.init = function( selector, context ) {
var match, elem;
View
@@ -57,10 +57,15 @@ test("jQuery()", function() {
equal( jQuery(undefined).length, 0, "jQuery(undefined) === jQuery([])" );
equal( jQuery(null).length, 0, "jQuery(null) === jQuery([])" );
equal( jQuery("").length, 0, "jQuery('') === jQuery([])" );
equal( jQuery("#").length, 0, "jQuery('#') === jQuery([])" );
equal( jQuery(obj).selector, "div", "jQuery(jQueryObj) == jQueryObj" );
// Invalid #id goes to Sizzle which will throw an error (gh-1682)
try {
jQuery( "#" );
} catch ( e ) {
ok( true, "Threw an error on #id with no id" );
}
// can actually yield more than one, when iframes are included, the window is an array as well
equal( jQuery(window).length, 1, "Correct number of elements generated for jQuery(window)" );

0 comments on commit 80022c8

Please sign in to comment.