scratch – Diff between revs 58 and 125

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