-
var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
"(?:[\\w*_-]|\\\\.)" :
"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}
}
},
-
+
// The regular expressions that power the parsing engine
parse: [
// Match: [@value='test'], [@foo]
// Match: :contains('foo')
/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
- // Match: :even, :last-chlid, #id, .class
+ // Match: :even, :last-child, #id, .class
new RegExp("^([:.#]*)(" + chars + "+)")
],
// An attempt at speeding up child selectors that
// point to a specific element tag
re = quickChild,
-
+
m = re.exec(t);
if ( m ) {
var id = jQuery.data(n);
if ( m == "~" && merge[id] ) break;
-
+
if (!nodeName || n.nodeName.toUpperCase() == nodeName ) {
if ( m == "~" ) merge[id] = true;
r.push( n );
}
-
+
if ( m == "+" ) break;
}
}
// Optimize for the case nodeName#idName
var re2 = quickID;
var m = re2.exec(t);
-
+
// Re-organize the results, so that they're consistent
if ( m ) {
m = [ 0, m[2], m[3], m[1] ];
if ( m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {
// Optimization for HTML document case
var oid = elem.getElementById(m[2]);
-
+
// Do a quick check for the existence of the actual ID attribute
// to avoid selecting by the name attribute in IE
// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
r = jQuery.classFilter(r, m[2], not);
else if ( m[1] == "[" ) {
- var type = m[3];
-
- // special case, filter by exact name
- if ( !not && m[2] == 'name' && type == '=' )
- r = jQuery.grep( document.getElementsByName(m[5]), function(elem){
- return jQuery.inArray( elem, r ) != -1;
- });
- else {
- for ( var i = 0, rl = r.length, tmp = []; i < rl; i++ ) {
- var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
-
- if ( z == null || /href|src|selected/.test(m[2]) )
- z = jQuery.attr(a,m[2]) || '';
-
- if ( (type == "" && !!z ||
- type == "=" && z == m[5] ||
- type == "!=" && z != m[5] ||
- type == "^=" && z && !z.indexOf(m[5]) ||
- type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
- (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
- tmp.push( a );
- }
- r = tmp;
+ var tmp = [], type = m[3];
+
+ for ( var i = 0, rl = r.length; i < rl; i++ ) {
+ var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
+
+ if ( z == null || /href|src|selected/.test(m[2]) )
+ z = jQuery.attr(a,m[2]) || '';
+
+ if ( (type == "" && !!z ||
+ type == "=" && z == m[5] ||
+ type == "!=" && z != m[5] ||
+ type == "^=" && z && !z.indexOf(m[5]) ||
+ type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
+ (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
+ tmp.push( a );
}
+ r = tmp;
+
// We can get a speed boost by handling nth-child here
} else if ( m[1] == ":" && m[2] == "nth-child" ) {
var merge = {}, tmp = [],
!/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
// calculate the numbers (first)n+(last) including if they are negative
first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;
-
+
// loop through all the elements left in the jQuery object
for ( var i = 0, rl = r.length; i < rl; i++ ) {
var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);
}
return matched;
},
-
+
nth: function(cur,result,dir,elem){
result = result || 1;
var num = 0;
return cur;
},
-
+
sibling: function( n, elem ) {
var r = [];
for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && (!elem || n != elem) )
+ if ( n.nodeType == 1 && n != elem )
r.push( n );
}
return r;
}
});
-
-