@@ -12,37 +12,38 @@ var runtil = /Until$/,
12
12
13
13
jQuery . fn . extend ( {
14
14
find : function ( selector ) {
15
- var i , ret , self ;
15
+ var self , matched , i ,
16
+ l = this . length ;
16
17
17
18
if ( typeof selector !== "string" ) {
18
19
self = this ;
19
20
return this . pushStack ( jQuery ( selector ) . filter ( function ( ) {
20
- for ( i = 0 ; i < self . length ; i ++ ) {
21
+ for ( i = 0 ; i < l ; i ++ ) {
21
22
if ( jQuery . contains ( self [ i ] , this ) ) {
22
23
return true ;
23
24
}
24
25
}
25
26
} ) ) ;
26
27
}
27
28
28
- ret = [ ] ;
29
- for ( i = 0 ; i < this . length ; i ++ ) {
30
- jQuery . find ( selector , this [ i ] , ret ) ;
29
+ matched = [ ] ;
30
+ for ( i = 0 ; i < l ; i ++ ) {
31
+ jQuery . find ( selector , this [ i ] , matched ) ;
31
32
}
32
33
33
34
// Needed because $( selector, context ) becomes $( context ).find( selector )
34
- ret = this . pushStack ( jQuery . unique ( ret ) ) ;
35
- ret . selector = ( this . selector ? this . selector + " " : "" ) + selector ;
36
- return ret ;
35
+ matched = this . pushStack ( jQuery . unique ( matched ) ) ;
36
+ matched . selector = ( this . selector ? this . selector + " " : "" ) + selector ;
37
+ return matched ;
37
38
} ,
38
39
39
40
has : function ( target ) {
40
- var i ,
41
- targets = jQuery ( target , this ) ,
42
- len = targets . length ;
41
+ var targets = jQuery ( target , this ) ,
42
+ l = targets . length ;
43
43
44
44
return this . filter ( function ( ) {
45
- for ( i = 0 ; i < len ; i ++ ) {
45
+ var i = 0 ;
46
+ for ( ; i < l ; i ++ ) {
46
47
if ( jQuery . contains ( this , targets [ i ] ) ) {
47
48
return true ;
48
49
}
@@ -64,7 +65,7 @@ jQuery.fn.extend({
64
65
// If this is a positional/relative selector, check membership in the returned set
65
66
// so $("p:first").is("p:last") won't return true for a doc with two "p".
66
67
rneedsContext . test ( selector ) ?
67
- jQuery ( selector , this . context ) . index ( this [ 0 ] ) >= 0 :
68
+ jQuery ( selector , this . context ) . index ( this [ 0 ] ) >= 0 :
68
69
jQuery . filter ( selector , this ) . length > 0 :
69
70
this . filter ( selector ) . length > 0 ) ;
70
71
} ,
@@ -73,24 +74,24 @@ jQuery.fn.extend({
73
74
var cur ,
74
75
i = 0 ,
75
76
l = this . length ,
76
- ret = [ ] ,
77
- pos = rneedsContext . test ( selectors ) || typeof selectors !== "string" ?
77
+ matched = [ ] ,
78
+ pos = ( rneedsContext . test ( selectors ) || typeof selectors !== "string" ) ?
78
79
jQuery ( selectors , context || this . context ) :
79
80
0 ;
80
81
81
82
for ( ; i < l ; i ++ ) {
82
- cur = this [ i ] ;
83
+ cur = this [ i ] ;
83
84
84
- while ( cur && cur . ownerDocument && cur !== context && cur . nodeType !== 11 ) {
85
- if ( pos ? pos . index ( cur ) > - 1 : jQuery . find . matchesSelector ( cur , selectors ) ) {
86
- ret . push ( cur ) ;
85
+ while ( cur && cur . ownerDocument && cur !== context ) {
86
+ if ( pos ? pos . index ( cur ) > - 1 : jQuery . find . matchesSelector ( cur , selectors ) ) {
87
+ matched . push ( cur ) ;
87
88
break ;
88
89
}
89
- cur = cur . parentNode ;
90
+ cur = cur . parentElement ;
90
91
}
91
92
}
92
93
93
- return this . pushStack ( ret . length > 1 ? jQuery . unique ( ret ) : ret ) ;
94
+ return this . pushStack ( matched . length > 1 ? jQuery . unique ( matched ) : matched ) ;
94
95
} ,
95
96
96
97
// Determine the position of an element within
@@ -99,18 +100,20 @@ jQuery.fn.extend({
99
100
100
101
// No argument, return index in parent
101
102
if ( ! elem ) {
102
- return ( this [ 0 ] && this [ 0 ] . parentNode ) ? this . first ( ) . prevAll ( ) . length : - 1 ;
103
+ return ( this [ 0 ] && this [ 0 ] . parentNode ) ? this . first ( ) . prevAll ( ) . length : - 1 ;
103
104
}
104
105
105
106
// index in selector
106
107
if ( typeof elem === "string" ) {
107
- return jQuery . inArray ( this [ 0 ] , jQuery ( elem ) ) ;
108
+ return core_indexOf . call ( jQuery ( elem ) , this [ 0 ] ) ;
108
109
}
109
110
110
111
// Locate the position of the desired element
111
- return jQuery . inArray (
112
+ return core_indexOf . call ( this ,
113
+
112
114
// If it receives a jQuery object, the first element is used
113
- elem . jquery ? elem [ 0 ] : elem , this ) ;
115
+ elem . jquery ? elem [ 0 ] : elem
116
+ ) ;
114
117
} ,
115
118
116
119
add : function ( selector , context ) {
@@ -131,48 +134,42 @@ jQuery.fn.extend({
131
134
132
135
jQuery . fn . andSelf = jQuery . fn . addBack ;
133
136
134
- function sibling ( cur , dir ) {
135
- do {
136
- cur = cur [ dir ] ;
137
- } while ( cur && cur . nodeType !== 1 ) ;
138
-
139
- return cur ;
140
- }
141
-
142
137
jQuery . each ( {
143
138
parent : function ( elem ) {
144
- var parent = elem . parentNode ;
145
- return parent && parent . nodeType !== 11 ? parent : null ;
139
+ return elem . parentElement ;
146
140
} ,
147
141
parents : function ( elem ) {
148
- return jQuery . dir ( elem , "parentNode " ) ;
142
+ return jQuery . dir ( elem , "parentElement " ) ;
149
143
} ,
150
144
parentsUntil : function ( elem , i , until ) {
151
- return jQuery . dir ( elem , "parentNode " , until ) ;
145
+ return jQuery . dir ( elem , "parentElement " , until ) ;
152
146
} ,
153
147
next : function ( elem ) {
154
- return sibling ( elem , "nextSibling" ) ;
148
+ return elem . nextElementSibling ;
155
149
} ,
156
150
prev : function ( elem ) {
157
- return sibling ( elem , "previousSibling" ) ;
151
+ return elem . previousElementSibling ;
158
152
} ,
159
153
nextAll : function ( elem ) {
160
- return jQuery . dir ( elem , "nextSibling " ) ;
154
+ return jQuery . dir ( elem , "nextElementSibling " ) ;
161
155
} ,
162
156
prevAll : function ( elem ) {
163
- return jQuery . dir ( elem , "previousSibling " ) ;
157
+ return jQuery . dir ( elem , "previousElementSibling " ) ;
164
158
} ,
165
159
nextUntil : function ( elem , i , until ) {
166
- return jQuery . dir ( elem , "nextSibling " , until ) ;
160
+ return jQuery . dir ( elem , "nextElementSibling " , until ) ;
167
161
} ,
168
162
prevUntil : function ( elem , i , until ) {
169
- return jQuery . dir ( elem , "previousSibling " , until ) ;
163
+ return jQuery . dir ( elem , "previousElementSibling " , until ) ;
170
164
} ,
171
165
siblings : function ( elem ) {
172
166
return jQuery . sibling ( ( elem . parentNode || { } ) . firstChild , elem ) ;
173
167
} ,
174
168
children : function ( elem ) {
175
- return jQuery . sibling ( elem . firstChild ) ;
169
+ var children = elem . children ;
170
+
171
+ // documentFragment or document does not have children property
172
+ return children ? jQuery . merge ( [ ] , children ) : jQuery . sibling ( elem . firstChild ) ;
176
173
} ,
177
174
contents : function ( elem ) {
178
175
return jQuery . nodeName ( elem , "iframe" ) ?
@@ -181,23 +178,27 @@ jQuery.each({
181
178
}
182
179
} , function ( name , fn ) {
183
180
jQuery . fn [ name ] = function ( until , selector ) {
184
- var ret = jQuery . map ( this , fn , until ) ;
181
+ var matched = jQuery . map ( this , fn , until ) ;
185
182
186
183
if ( ! runtil . test ( name ) ) {
187
184
selector = until ;
188
185
}
189
186
190
187
if ( selector && typeof selector === "string" ) {
191
- ret = jQuery . filter ( selector , ret ) ;
188
+ matched = jQuery . filter ( selector , matched ) ;
192
189
}
193
190
194
- ret = this . length > 1 && ! guaranteedUnique [ name ] ? jQuery . unique ( ret ) : ret ;
191
+ if ( this . length > 1 ) {
192
+ if ( ! guaranteedUnique [ name ] ) {
193
+ jQuery . unique ( matched ) ;
194
+ }
195
195
196
- if ( this . length > 1 && rparentsprev . test ( name ) ) {
197
- ret = ret . reverse ( ) ;
196
+ if ( rparentsprev . test ( name ) ) {
197
+ matched . reverse ( ) ;
198
+ }
198
199
}
199
200
200
- return this . pushStack ( ret ) ;
201
+ return this . pushStack ( matched ) ;
201
202
} ;
202
203
} ) ;
203
204
@@ -208,33 +209,32 @@ jQuery.extend({
208
209
}
209
210
210
211
return elems . length === 1 ?
211
- jQuery . find . matchesSelector ( elems [ 0 ] , expr ) ? [ elems [ 0 ] ] : [ ] :
212
- jQuery . find . matches ( expr , elems ) ;
212
+ jQuery . find . matchesSelector ( elems [ 0 ] , expr ) ? [ elems [ 0 ] ] : [ ] :
213
+ jQuery . find . matches ( expr , elems ) ;
213
214
} ,
214
215
215
216
dir : function ( elem , dir , until ) {
216
- var matched = [ ] ,
217
- cur = elem [ dir ] ;
217
+ var cur = elem [ dir ] ,
218
+ matched = [ ] ;
218
219
219
- while ( cur && cur . nodeType !== 9 && ( until === undefined || cur . nodeType !== 1 || ! jQuery ( cur ) . is ( until ) ) ) {
220
- if ( cur . nodeType === 1 ) {
221
- matched . push ( cur ) ;
222
- }
223
- cur = cur [ dir ] ;
220
+ while ( cur && ( ! until || ! jQuery ( cur ) . is ( until ) ) ) {
221
+ matched . push ( cur ) ;
222
+ cur = cur [ dir ] ;
224
223
}
224
+
225
225
return matched ;
226
226
} ,
227
227
228
228
sibling : function ( n , elem ) {
229
- var r = [ ] ;
229
+ var matched = [ ] ;
230
230
231
231
for ( ; n ; n = n . nextSibling ) {
232
232
if ( n . nodeType === 1 && n !== elem ) {
233
- r . push ( n ) ;
233
+ matched . push ( n ) ;
234
234
}
235
235
}
236
236
237
- return r ;
237
+ return matched ;
238
238
}
239
239
} ) ;
240
240
@@ -245,30 +245,34 @@ function winnow( elements, qualifier, keep ) {
245
245
// Set to 0 to skip string check
246
246
qualifier = qualifier || 0 ;
247
247
248
+ var filtered ;
249
+
248
250
if ( jQuery . isFunction ( qualifier ) ) {
249
251
return jQuery . grep ( elements , function ( elem , i ) {
250
252
var retVal = ! ! qualifier . call ( elem , i , elem ) ;
251
253
return retVal === keep ;
252
254
} ) ;
255
+ }
253
256
254
- } else if ( qualifier . nodeType ) {
257
+ if ( qualifier . nodeType ) {
255
258
return jQuery . grep ( elements , function ( elem ) {
256
259
return ( elem === qualifier ) === keep ;
257
260
} ) ;
261
+ }
258
262
259
- } else if ( typeof qualifier === "string" ) {
260
- var filtered = jQuery . grep ( elements , function ( elem ) {
263
+ if ( typeof qualifier === "string" ) {
264
+ filtered = jQuery . grep ( elements , function ( elem ) {
261
265
return elem . nodeType === 1 ;
262
266
} ) ;
263
267
264
268
if ( isSimple . test ( qualifier ) ) {
265
- return jQuery . filter ( qualifier , filtered , ! keep ) ;
266
- } else {
267
- qualifier = jQuery . filter ( qualifier , filtered ) ;
269
+ return jQuery . filter ( qualifier , filtered , ! keep ) ;
268
270
}
271
+
272
+ qualifier = jQuery . filter ( qualifier , filtered ) ;
269
273
}
270
274
271
275
return jQuery . grep ( elements , function ( elem ) {
272
- return ( jQuery . inArray ( elem , qualifier ) >= 0 ) === keep ;
276
+ return ( core_indexOf . call ( qualifier , elem ) >= 0 ) === keep ;
273
277
} ) ;
274
278
}
0 commit comments