scratch – Blame information for rev 125
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
125 | office | 1 | define([ |
58 | office | 2 | "../core", |
3 | "../var/indexOf", |
||
4 | "./var/rneedsContext", |
||
5 | "../selector" |
||
6 | ], function( jQuery, indexOf, rneedsContext ) { |
||
7 | |||
8 | var risSimple = /^.[^:#\[\.,]*$/; |
||
9 | |||
10 | // Implement the identical functionality for filter and not |
||
11 | function winnow( elements, qualifier, not ) { |
||
12 | if ( jQuery.isFunction( qualifier ) ) { |
||
13 | return jQuery.grep( elements, function( elem, i ) { |
||
125 | office | 14 | /* jshint -W018 */ |
58 | office | 15 | return !!qualifier.call( elem, i, elem ) !== not; |
125 | office | 16 | }); |
17 | |||
58 | office | 18 | } |
19 | |||
20 | if ( qualifier.nodeType ) { |
||
21 | return jQuery.grep( elements, function( elem ) { |
||
22 | return ( elem === qualifier ) !== not; |
||
125 | office | 23 | }); |
58 | office | 24 | |
25 | } |
||
26 | |||
125 | office | 27 | if ( typeof qualifier === "string" ) { |
28 | if ( risSimple.test( qualifier ) ) { |
||
29 | return jQuery.filter( qualifier, elements, not ); |
||
30 | } |
||
31 | |||
32 | qualifier = jQuery.filter( qualifier, elements ); |
||
58 | office | 33 | } |
34 | |||
35 | return jQuery.grep( elements, function( elem ) { |
||
125 | office | 36 | return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; |
37 | }); |
||
58 | office | 38 | } |
39 | |||
40 | jQuery.filter = function( expr, elems, not ) { |
||
41 | var elem = elems[ 0 ]; |
||
42 | |||
43 | if ( not ) { |
||
44 | expr = ":not(" + expr + ")"; |
||
45 | } |
||
46 | |||
125 | office | 47 | return elems.length === 1 && elem.nodeType === 1 ? |
48 | jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : |
||
49 | jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { |
||
50 | return elem.nodeType === 1; |
||
51 | })); |
||
58 | office | 52 | }; |
53 | |||
125 | office | 54 | jQuery.fn.extend({ |
58 | office | 55 | find: function( selector ) { |
125 | office | 56 | var i, |
58 | office | 57 | len = this.length, |
125 | office | 58 | ret = [], |
58 | office | 59 | self = this; |
60 | |||
61 | if ( typeof selector !== "string" ) { |
||
125 | office | 62 | return this.pushStack( jQuery( selector ).filter(function() { |
58 | office | 63 | for ( i = 0; i < len; i++ ) { |
64 | if ( jQuery.contains( self[ i ], this ) ) { |
||
65 | return true; |
||
66 | } |
||
67 | } |
||
125 | office | 68 | }) ); |
58 | office | 69 | } |
70 | |||
71 | for ( i = 0; i < len; i++ ) { |
||
72 | jQuery.find( selector, self[ i ], ret ); |
||
73 | } |
||
74 | |||
125 | office | 75 | // Needed because $( selector, context ) becomes $( context ).find( selector ) |
76 | ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); |
||
77 | ret.selector = this.selector ? this.selector + " " + selector : selector; |
||
78 | return ret; |
||
58 | office | 79 | }, |
80 | filter: function( selector ) { |
||
125 | office | 81 | return this.pushStack( winnow(this, selector || [], false) ); |
58 | office | 82 | }, |
83 | not: function( selector ) { |
||
125 | office | 84 | return this.pushStack( winnow(this, selector || [], true) ); |
58 | office | 85 | }, |
86 | is: function( selector ) { |
||
87 | return !!winnow( |
||
88 | this, |
||
89 | |||
90 | // If this is a positional/relative selector, check membership in the returned set |
||
91 | // so $("p:first").is("p:last") won't return true for a doc with two "p". |
||
92 | typeof selector === "string" && rneedsContext.test( selector ) ? |
||
93 | jQuery( selector ) : |
||
94 | selector || [], |
||
95 | false |
||
96 | ).length; |
||
97 | } |
||
125 | office | 98 | }); |
58 | office | 99 | |
125 | office | 100 | }); |