@@ -15,24 +15,29 @@ function winnow( elements, qualifier, not ) {
1515 return jQuery . grep ( elements , function ( elem , i ) {
1616 return ! ! qualifier . call ( elem , i , elem ) !== not ;
1717 } ) ;
18-
1918 }
2019
20+ // Single element
2121 if ( qualifier . nodeType ) {
2222 return jQuery . grep ( elements , function ( elem ) {
2323 return ( elem === qualifier ) !== not ;
2424 } ) ;
25-
2625 }
2726
28- if ( typeof qualifier === "string" ) {
29- if ( risSimple . test ( qualifier ) ) {
30- return jQuery . filter ( qualifier , elements , not ) ;
31- }
27+ // Arraylike of elements (jQuery, arguments, Array)
28+ if ( typeof qualifier !== "string" ) {
29+ return jQuery . grep ( elements , function ( elem ) {
30+ return ( indexOf . call ( qualifier , elem ) > - 1 ) !== not ;
31+ } ) ;
32+ }
3233
33- qualifier = jQuery . filter ( qualifier , elements ) ;
34+ // Simple selector that can be filtered directly, removing non-Elements
35+ if ( risSimple . test ( qualifier ) ) {
36+ return jQuery . filter ( qualifier , elements , not ) ;
3437 }
3538
39+ // Complex selector, compare the two sets, removing non-Elements
40+ qualifier = jQuery . filter ( qualifier , elements ) ;
3641 return jQuery . grep ( elements , function ( elem ) {
3742 return ( indexOf . call ( qualifier , elem ) > - 1 ) !== not && elem . nodeType === 1 ;
3843 } ) ;
0 commit comments