diff --git a/src/event.js b/src/event.js index 04589bcfc..02c26dc23 100644 --- a/src/event.js +++ b/src/event.js @@ -7,20 +7,14 @@ var rnamespaces = /\.(.*)$/, rescape = /[^\w\s.|`]/g, rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, rhoverHack = /\bhover(\.\S+)?/, - rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?(?::(first-child|last-child|empty))?$/, - quickPseudoMap = { - "empty": "firstChild", - "first-child": "previousSibling", - "last-child": "nextSibling" - }, + rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?$/, quickParse = function( selector ) { var quick = rquickIs.exec( selector ); if ( quick ) { - // 0 1 2 3 4 5 6 - // [ _, tag, id, class, attrName, attrValue, :(empty first-child last-child) ] + // 0 1 2 3 4 5 + // [ _, tag, id, class, attrName, attrValue ] quick[1] = ( quick[1] || "" ).toLowerCase(); quick[3] = quick[3] && new RegExp( "\\b" + quick[3] + "\\b" ); - quick[6] = quickPseudoMap[ quick[6] ]; } return quick; }, @@ -29,8 +23,7 @@ var rnamespaces = /\.(.*)$/, (!m[1] || elem.nodeName.toLowerCase() === m[1]) && (!m[2] || elem.id === m[2]) && (!m[3] || m[3].test( elem.className )) && - (!m[4] || elem.getAttribute( m[4] ) == m[5]) && - (!m[6] || !elem[ m[6] ]) + (!m[4] || elem.getAttribute( m[4] ) == m[5]) ); }, useNativeMethod = function( event ) { diff --git a/test/unit/event.js b/test/unit/event.js index a7a989a56..9a03bb32c 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2337,7 +2337,7 @@ test(".on and .off", function() { }); test("delegated events quickIs", function() { - expect(23); + expect(17); var markup = jQuery( '
'+ @@ -2369,19 +2369,16 @@ test("delegated events quickIs", function() { .on( "blink", "p.d", func ) .on( "blink", "[devo=cool]", func ) .on( "blink", "[devo='NO']", func ) - .on( "blink", "#famous", func ) - .on( "blink", "em:empty", func ) - .on( "blink", ":first-child", func ) - .on( "blink", "em:last-child", func ); + .on( "blink", "#famous", func ); - check( "[devo=cool]", "b|[devo=cool] p|.D p|:first-child" ); + check( "[devo=cool]", "b|[devo=cool] p|.D" ); check( "[devo='']", "" ); - check( "p", "p|.D p|:first-child" ); - check( "b", "b|[devo=cool] p|.D p|:first-child" ); - check( "em", "em|em q|#famous em|em em|em:empty em|em:last-child q|#famous" ); + check( "p", "p|.D" ); + check( "b", "b|[devo=cool] p|.D" ); + check( "em", "em|em q|#famous em|em q|#famous" ); markup.find( "b" ).attr( "devo", "NO" ); - check( "b", "b|[devo='NO'] p|.D p|:first-child" ); + check( "b", "b|[devo='NO'] p|.D" ); markup.remove(); });