mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
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.
This commit is contained in:
parent
ee3eb6cabf
commit
746074f0f7
11
src/event.js
11
src/event.js
@ -9,14 +9,14 @@ var rnamespaces = /\.(.*)$/,
|
|||||||
rhoverHack = /\bhover(\.\S+)?/,
|
rhoverHack = /\bhover(\.\S+)?/,
|
||||||
rkeyEvent = /^key/,
|
rkeyEvent = /^key/,
|
||||||
rmouseEvent = /^(?:mouse|contextmenu)|click/,
|
rmouseEvent = /^(?:mouse|contextmenu)|click/,
|
||||||
rquickIs = /^([\w\-]+)?(?:#([\w\-]+))?(?:\.([\w\-]+))?(?:\[([\w+\-]+)=["']?([\w\-]*)["']?\])?$/,
|
rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
|
||||||
quickParse = function( selector ) {
|
quickParse = function( selector ) {
|
||||||
var quick = rquickIs.exec( selector );
|
var quick = rquickIs.exec( selector );
|
||||||
if ( quick ) {
|
if ( quick ) {
|
||||||
// 0 1 2 3 4 5
|
// 0 1 2 3
|
||||||
// [ _, tag, id, class, attrName, attrValue ]
|
// [ _, tag, id, class ]
|
||||||
quick[1] = ( quick[1] || "" ).toLowerCase();
|
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;
|
return quick;
|
||||||
},
|
},
|
||||||
@ -24,8 +24,7 @@ var rnamespaces = /\.(.*)$/,
|
|||||||
return (
|
return (
|
||||||
(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
|
(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
|
||||||
(!m[2] || elem.id === m[2]) &&
|
(!m[2] || elem.id === m[2]) &&
|
||||||
(!m[3] || m[3].test( elem.className )) &&
|
(!m[3] || m[3].test( elem.className ))
|
||||||
(!m[4] || elem.getAttribute( m[4] ) == m[5])
|
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2409,11 +2409,11 @@ test(".on and .off", function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test("delegated events quickIs", function() {
|
test("delegated events quickIs", function() {
|
||||||
expect(17);
|
expect(14);
|
||||||
var markup = jQuery(
|
var markup = jQuery(
|
||||||
'<div>'+
|
'<div>'+
|
||||||
'<p class="D">'+
|
'<p class="D">'+
|
||||||
'dead<b devo="cool">beat</b>club'+
|
'dead<b class="devo-like">beat</b>club'+
|
||||||
'</p>'+
|
'</p>'+
|
||||||
'<q id="famous">'+
|
'<q id="famous">'+
|
||||||
'worked<em>or</em>borked?<em></em>'+
|
'worked<em>or</em>borked?<em></em>'+
|
||||||
@ -2437,29 +2437,18 @@ test("delegated events quickIs", function() {
|
|||||||
.appendTo( "body" )
|
.appendTo( "body" )
|
||||||
.on( "blink", "em", func )
|
.on( "blink", "em", func )
|
||||||
.on( "blink", ".D", func )
|
.on( "blink", ".D", func )
|
||||||
|
.on( "blink", ".devo-like", func )
|
||||||
|
.on( "blink", ".devo", func )
|
||||||
.on( "blink", ".d", func )
|
.on( "blink", ".d", func )
|
||||||
.on( "blink", "p.d", func )
|
.on( "blink", "p.d", func )
|
||||||
.on( "blink", "[devo=cool]", func )
|
|
||||||
.on( "blink", "[devo='NO']", func )
|
|
||||||
.on( "blink", "#famous", func );
|
.on( "blink", "#famous", func );
|
||||||
|
|
||||||
check( "[devo=cool]", "b|[devo=cool] p|.D" );
|
check( ".devo-like", "b|.devo-like p|.D" );
|
||||||
check( "[devo='']", "" );
|
check( ".devo", "" );
|
||||||
check( "p", "p|.D" );
|
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" );
|
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();
|
markup.remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user