DomQuery supports most of the CSS3 selectors spec, along with some custom selectors and basic XPath.
All selectors, attribute filters and pseudos below can be combined infinitely in any order. For example "div.foo:nth-child(odd)[@foo=bar].bar:first" would be a perfectly valid selector. Node filters are processed in the order in which they appear, which allows you to optimize your queries for your document structure.
The use of @ and quotes are optional. For example, div[@foo='bar'] is also a valid attribute selector.
Object hash of "pseudo class" filter functions which are used when filtering selections. Each function is passed two parameters:
c : Array An Array of DOM elements to filter.
v : String The argument (if any) supplied in the selector.
A filter function returns an Array of DOM elements which conform to the pseudo class.
In addition to the provided pseudo classes listed above such as first-child
and nth-child
,
developers may add additional, custom psuedo class filters to select elements according to application-specific requirements.
For example, to filter a
elements to only return links to external resources:
Ext.DomQuery.pseudos.external = function(c, v){
var r = [], ri = -1;
for(var i = 0, ci; ci = c[i]; i++){
// Include in result set only if it's a link to an external resource
if(ci.hostname != location.hostname){
r[++ri] = ci;
}
}
return r;
};
Then external links could be gathered with the following statement:
var externalLinks = Ext.select("a:external");