| 5786 | |
| 5787 | // Implement the identical functionality for filter and not |
| 5788 | function winnow( elements, qualifier, keep ) { |
| 5789 | |
| 5790 | // Can't pass null or undefined to indexOf in Firefox 4 |
| 5791 | // Set to 0 to skip string check |
| 5792 | qualifier = qualifier || 0; |
| 5793 | |
| 5794 | if ( jQuery.isFunction( qualifier ) ) { |
| 5795 | return jQuery.grep(elements, function( elem, i ) { |
| 5796 | var retVal = !!qualifier.call( elem, i, elem ); |
| 5797 | return retVal === keep; |
| 5798 | }); |
| 5799 | |
| 5800 | } else if ( qualifier.nodeType ) { |
| 5801 | return jQuery.grep(elements, function( elem ) { |
| 5802 | return ( elem === qualifier ) === keep; |
| 5803 | }); |
| 5804 | |
| 5805 | } else if ( typeof qualifier === "string" ) { |
| 5806 | var filtered = jQuery.grep(elements, function( elem ) { |
| 5807 | return elem.nodeType === 1; |
| 5808 | }); |
| 5809 | |
| 5810 | if ( isSimple.test( qualifier ) ) { |
| 5811 | return jQuery.filter(qualifier, filtered, !keep); |
| 5812 | } else { |
| 5813 | qualifier = jQuery.filter( qualifier, filtered ); |
| 5814 | } |
| 5815 | } |
| 5816 | |
| 5817 | return jQuery.grep(elements, function( elem ) { |
| 5818 | return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; |
| 5819 | }); |
| 5820 | } |
| 5821 | function createSafeFragment( document ) { |
| 5822 | var list = nodeNames.split( "|" ), |
| 5823 | safeFrag = document.createDocumentFragment(); |