annotate default/node_modules/jquery/src/selector-native.js @ 0:1d038bc9b3d2 default tip

Up:default
author Liny <dev@neowd.com>
date Sat, 31 May 2025 09:21:51 +0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
1 define( [
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
2 "./core",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
3 "./var/document",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
4 "./var/documentElement",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
5 "./var/hasOwn",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
6 "./var/indexOf"
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
7 ], function( jQuery, document, documentElement, hasOwn, indexOf ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
8
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
9 "use strict";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
10
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
11 /*
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
12 * Optional (non-Sizzle) selector module for custom builds.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
13 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
14 * Note that this DOES NOT SUPPORT many documented jQuery
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
15 * features in exchange for its smaller size:
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
16 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
17 * Attribute not equal selector
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
18 * Positional selectors (:first; :eq(n); :odd; etc.)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
19 * Type selectors (:input; :checkbox; :button; etc.)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
20 * State-based selectors (:animated; :visible; :hidden; etc.)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
21 * :has(selector)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
22 * :not(complex selector)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
23 * custom selectors via Sizzle extensions
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
24 * Leading combinators (e.g., $collection.find("> *"))
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
25 * Reliable functionality on XML fragments
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
26 * Requiring all parts of a selector to match elements under context
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
27 * (e.g., $div.find("div > *") now matches children of $div)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
28 * Matching against non-elements
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
29 * Reliable sorting of disconnected nodes
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
30 * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
31 *
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
32 * If any of these are unacceptable tradeoffs, either use Sizzle or
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
33 * customize this stub for the project's specific needs.
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
34 */
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
35
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
36 var hasDuplicate, sortInput,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
37 sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
38 matches = documentElement.matches ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
39 documentElement.webkitMatchesSelector ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
40 documentElement.mozMatchesSelector ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
41 documentElement.oMatchesSelector ||
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
42 documentElement.msMatchesSelector,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
43
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
44 // CSS string/identifier serialization
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
45 // https://drafts.csswg.org/cssom/#common-serializing-idioms
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
46 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
47 fcssescape = function( ch, asCodePoint ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
48 if ( asCodePoint ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
49
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
50 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
51 if ( ch === "\0" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
52 return "\uFFFD";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
53 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
54
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
55 // Control characters and (dependent upon position) numbers get escaped as code points
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
56 return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
57 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
58
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
59 // Other potentially-special ASCII characters get backslash-escaped
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
60 return "\\" + ch;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
61 };
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
62
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
63 function sortOrder( a, b ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
64
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
65 // Flag for duplicate removal
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
66 if ( a === b ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
67 hasDuplicate = true;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
68 return 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
69 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
70
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
71 // Sort on method existence if only one input has compareDocumentPosition
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
72 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
73 if ( compare ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
74 return compare;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
75 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
76
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
77 // Calculate position if both inputs belong to the same document
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
78 compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
79 a.compareDocumentPosition( b ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
80
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
81 // Otherwise we know they are disconnected
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
82 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
83
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
84 // Disconnected nodes
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
85 if ( compare & 1 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
86
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
87 // Choose the first element that is related to our preferred document
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
88 if ( a === document || a.ownerDocument === document &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
89 jQuery.contains( document, a ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
90 return -1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
91 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
92 if ( b === document || b.ownerDocument === document &&
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
93 jQuery.contains( document, b ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
94 return 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
95 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
96
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
97 // Maintain original order
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
98 return sortInput ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
99 ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
100 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
101 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
102
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
103 return compare & 4 ? -1 : 1;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
104 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
105
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
106 function uniqueSort( results ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
107 var elem,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
108 duplicates = [],
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
109 j = 0,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
110 i = 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
111
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
112 hasDuplicate = false;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
113 sortInput = !sortStable && results.slice( 0 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
114 results.sort( sortOrder );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
115
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
116 if ( hasDuplicate ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
117 while ( ( elem = results[ i++ ] ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
118 if ( elem === results[ i ] ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
119 j = duplicates.push( i );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
120 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
121 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
122 while ( j-- ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
123 results.splice( duplicates[ j ], 1 );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
124 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
125 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
126
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
127 // Clear input after sorting to release objects
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
128 // See https://github.com/jquery/sizzle/pull/225
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
129 sortInput = null;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
130
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
131 return results;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
132 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
133
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
134 function escape( sel ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
135 return ( sel + "" ).replace( rcssescape, fcssescape );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
136 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
137
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
138 jQuery.extend( {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
139 uniqueSort: uniqueSort,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
140 unique: uniqueSort,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
141 escapeSelector: escape,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
142 find: function( selector, context, results, seed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
143 var elem, nodeType,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
144 i = 0;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
145
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
146 results = results || [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
147 context = context || document;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
148
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
149 // Same basic safeguard as Sizzle
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
150 if ( !selector || typeof selector !== "string" ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
151 return results;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
152 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
153
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
154 // Early return if context is not an element or document
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
155 if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
156 return [];
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
157 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
158
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
159 if ( seed ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
160 while ( ( elem = seed[ i++ ] ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
161 if ( jQuery.find.matchesSelector( elem, selector ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
162 results.push( elem );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
163 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
164 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
165 } else {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
166 jQuery.merge( results, context.querySelectorAll( selector ) );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
167 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
168
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
169 return results;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
170 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
171 text: function( elem ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
172 var node,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
173 ret = "",
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
174 i = 0,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
175 nodeType = elem.nodeType;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
176
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
177 if ( !nodeType ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
178
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
179 // If no nodeType, this is expected to be an array
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
180 while ( ( node = elem[ i++ ] ) ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
181
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
182 // Do not traverse comment nodes
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
183 ret += jQuery.text( node );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
184 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
185 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
186
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
187 // Use textContent for elements
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
188 return elem.textContent;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
189 } else if ( nodeType === 3 || nodeType === 4 ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
190 return elem.nodeValue;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
191 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
192
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
193 // Do not include comment or processing instruction nodes
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
194
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
195 return ret;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
196 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
197 contains: function( a, b ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
198 var adown = a.nodeType === 9 ? a.documentElement : a,
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
199 bup = b && b.parentNode;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
200 return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
201 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
202 isXMLDoc: function( elem ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
203
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
204 // documentElement is verified for cases where it doesn't yet exist
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
205 // (such as loading iframes in IE - #4833)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
206 var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
207 return documentElement ? documentElement.nodeName !== "HTML" : false;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
208 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
209 expr: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
210 attrHandle: {},
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
211 match: {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
212 bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
213 "|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
214 needsContext: /^[\x20\t\r\n\f]*[>+~]/
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
215 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
216 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
217 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
218
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
219 jQuery.extend( jQuery.find, {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
220 matches: function( expr, elements ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
221 return jQuery.find( expr, null, null, elements );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
222 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
223 matchesSelector: function( elem, expr ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
224 return matches.call( elem, expr );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
225 },
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
226 attr: function( elem, name ) {
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
227 var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
228
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
229 // Don't get fooled by Object.prototype properties (jQuery #13807)
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
230 value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
231 fn( elem, name, jQuery.isXMLDoc( elem ) ) :
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
232 undefined;
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
233 return value !== undefined ? value : elem.getAttribute( name );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
234 }
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
235 } );
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
236
1d038bc9b3d2 Up:default
Liny <dev@neowd.com>
parents:
diff changeset
237 } );