( selector, context, results, seed )
| 1051 | } |
| 1052 | |
| 1053 | function Sizzle( selector, context, results, seed ) { |
| 1054 | var match, elem, m, nodeType, |
| 1055 | // QSA vars |
| 1056 | i, groups, old, nid, newContext, newSelector; |
| 1057 | |
| 1058 | if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { |
| 1059 | setDocument( context ); |
| 1060 | } |
| 1061 | |
| 1062 | context = context || document; |
| 1063 | results = results || []; |
| 1064 | |
| 1065 | if ( !selector || typeof selector !== "string" ) { |
| 1066 | return results; |
| 1067 | } |
| 1068 | |
| 1069 | if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { |
| 1070 | return []; |
| 1071 | } |
| 1072 | |
| 1073 | if ( documentIsHTML && !seed ) { |
| 1074 | |
| 1075 | // Shortcuts |
| 1076 | if ( (match = rquickExpr.exec( selector )) ) { |
| 1077 | // Speed-up: Sizzle("#ID") |
| 1078 | if ( (m = match[1]) ) { |
| 1079 | if ( nodeType === 9 ) { |
| 1080 | elem = context.getElementById( m ); |
| 1081 | // Check parentNode to catch when Blackberry 4.6 returns |
| 1082 | // nodes that are no longer in the document #6963 |
| 1083 | if ( elem && elem.parentNode ) { |
| 1084 | // Handle the case where IE, Opera, and Webkit return items |
| 1085 | // by name instead of ID |
| 1086 | if ( elem.id === m ) { |
| 1087 | results.push( elem ); |
| 1088 | return results; |
| 1089 | } |
| 1090 | } else { |
| 1091 | return results; |
| 1092 | } |
| 1093 | } else { |
| 1094 | // Context is not a document |
| 1095 | if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && |
| 1096 | contains( context, elem ) && elem.id === m ) { |
| 1097 | results.push( elem ); |
| 1098 | return results; |
| 1099 | } |
| 1100 | } |
| 1101 | |
| 1102 | // Speed-up: Sizzle("TAG") |
| 1103 | } else if ( match[2] ) { |
| 1104 | push.apply( results, context.getElementsByTagName( selector ) ); |
| 1105 | return results; |
| 1106 | |
| 1107 | // Speed-up: Sizzle(".CLASS") |
| 1108 | } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { |
| 1109 | push.apply( results, context.getElementsByClassName( m ) ); |
| 1110 | return results; |
no test coverage detected