| 5416 | |
| 5417 | // Implement the identical functionality for filter and not |
| 5418 | function winnow( elements, qualifier, keep ) { |
| 5419 | |
| 5420 | // Can't pass null or undefined to indexOf in Firefox 4 |
| 5421 | // Set to 0 to skip string check |
| 5422 | qualifier = qualifier || 0; |
| 5423 | |
| 5424 | if ( jQuery.isFunction( qualifier ) ) { |
| 5425 | return jQuery.grep(elements, function( elem, i ) { |
| 5426 | var retVal = !!qualifier.call( elem, i, elem ); |
| 5427 | return retVal === keep; |
| 5428 | }); |
| 5429 | |
| 5430 | } else if ( qualifier.nodeType ) { |
| 5431 | return jQuery.grep(elements, function( elem, i ) { |
| 5432 | return (elem === qualifier) === keep; |
| 5433 | }); |
| 5434 | |
| 5435 | } else if ( typeof qualifier === "string" ) { |
| 5436 | var filtered = jQuery.grep(elements, function( elem ) { |
| 5437 | return elem.nodeType === 1; |
| 5438 | }); |
| 5439 | |
| 5440 | if ( isSimple.test( qualifier ) ) { |
| 5441 | return jQuery.filter(qualifier, filtered, !keep); |
| 5442 | } else { |
| 5443 | qualifier = jQuery.filter( qualifier, filtered ); |
| 5444 | } |
| 5445 | } |
| 5446 | |
| 5447 | return jQuery.grep(elements, function( elem, i ) { |
| 5448 | return (jQuery.inArray( elem, qualifier ) >= 0) === keep; |
| 5449 | }); |
| 5450 | } |
| 5451 | |
| 5452 | |
| 5453 | |