diff options
author | Dave Methvin <dave.methvin@gmail.com> | 2011-10-24 18:05:53 -0400 |
---|---|---|
committer | Dave Methvin <dave.methvin@gmail.com> | 2011-10-24 18:05:53 -0400 |
commit | 746074f0f74b0c0916fb2db2b6370c324822f31a (patch) | |
tree | baf8f24be0f41de1d260606e0b78be456955f13d | |
parent | ee3eb6cabf1383efe479e090fe6ad8ed2e5a09a3 (diff) | |
download | jquery-746074f0f74b0c0916fb2db2b6370c324822f31a.tar.gz jquery-746074f0f74b0c0916fb2db2b6370c324822f31a.zip |
Remove attribute match from quickIs
As @timmywil points out, attributes and properties are confused by IE6/7. This commit also reworks the unit test case to do a better job of checking className matches.
-rw-r--r-- | src/event.js | 11 | ||||
-rw-r--r-- | test/unit/event.js | 25 |
2 files changed, 12 insertions, 24 deletions
diff --git a/src/event.js b/src/event.js index 23e9ca0e0..382ff3614 100644 --- a/src/event.js +++ b/src/event.js @@ -9,14 +9,14 @@ var rnamespaces = /\.(.*)$/, rhoverHack = /\bhover(\.\S+)?/, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|contextmenu)|click/, - rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, quickParse = function( selector ) { var quick = rquickIs.exec( selector ); if ( quick ) { - // 0 1 2 3 4 5 - // [ _, tag, id, class, attrName, attrValue ] + // 0 1 2 3 + // [ _, tag, id, class ] quick[1] = ( quick[1] || "" ).toLowerCase(); - quick[3] = quick[3] && new RegExp( "(?:^|\\w)" + quick[3] + "(?:\\w|$)" ); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); } return quick; }, @@ -24,8 +24,7 @@ var rnamespaces = /\.(.*)$/, return ( (!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[3] || m[3].test( elem.className )) ); }; diff --git a/test/unit/event.js b/test/unit/event.js index de9c225c1..35664b022 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2409,11 +2409,11 @@ test(".on and .off", function() { }); test("delegated events quickIs", function() { - expect(17); + expect(14); var markup = jQuery( '<div>'+ '<p class="D">'+ - 'dead<b devo="cool">beat</b>club'+ + 'dead<b class="devo-like">beat</b>club'+ '</p>'+ '<q id="famous">'+ 'worked<em>or</em>borked?<em></em>'+ @@ -2437,29 +2437,18 @@ test("delegated events quickIs", function() { .appendTo( "body" ) .on( "blink", "em", func ) .on( "blink", ".D", func ) + .on( "blink", ".devo-like", func ) + .on( "blink", ".devo", func ) .on( "blink", ".d", func ) .on( "blink", "p.d", func ) - .on( "blink", "[devo=cool]", func ) - .on( "blink", "[devo='NO']", func ) .on( "blink", "#famous", func ); - check( "[devo=cool]", "b|[devo=cool] p|.D" ); - check( "[devo='']", "" ); + check( ".devo-like", "b|.devo-like p|.D" ); + check( ".devo", "" ); check( "p", "p|.D" ); - check( "b", "b|[devo=cool] p|.D" ); + check( "b", "b|.devo-like 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" ); - - markup - .on( "blink", ".tricky", function() { - ok( false, "triggered on wrong class name match" ); - }) - .find( "p" ) - .attr( "class", "tricky-match" ) - .trigger( "blink" ); - markup.remove(); }); |