// 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;
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)" );