// | ... // | // | // |
// example: // set an "odd" class on all odd table rows inside of the table // `#tabular_data`, using the `>` (direct child) selector to avoid // affecting any nested tables: // | dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd"); // example: // remove all elements with the class "error" from the document // and store them in a list: // | var errors = dojo.query(".error").orphan(); // example: // add an onclick handler to every submit button in the document // which causes the form to be sent via Ajax instead: // | dojo.query("input[type='submit']").onclick(function(e){ // | dojo.stopEvent(e); // prevent sending the form // | var btn = e.target; // | dojo.xhrPost({ // | form: btn.form, // | load: function(data){ // | // replace the form with the response // | var div = dojo.doc.createElement("div"); // | dojo.place(div, btn.form, "after"); // | div.innerHTML = data; // | dojo.style(btn.form, "display", "none"); // | } // | }); // | }); //Set list constructor to desired value. This can change //between calls, so always re-assign here. qlc = d._queryListCtor; if(!query){ return new qlc(); } if(query.constructor == qlc){ return query; } if(!isString(query)){ return new qlc(query); // dojo.NodeList } if(isString(root)){ root = d.byId(root); if(!root){ return new qlc(); } } root = root||getDoc(); var od = root.ownerDocument||root.documentElement; // throw the big case sensitivity switch // NOTE: // Opera in XHTML mode doesn't detect case-sensitivity correctly // and it's not clear that there's any way to test for it caseSensitive = (root.contentType && root.contentType=="application/xml") || (d.isOpera && (root.doctype || od.toString() == "[object XMLDocument]")) || (!!od) && (d.isIE ? od.xml : (root.xmlVersion||od.xmlVersion)); // NOTE: // adding "true" as the 2nd argument to getQueryFunc is useful for // testing the DOM branch without worrying about the // behavior/performance of the QSA branch. var r = getQueryFunc(query)(root); // FIXME: // need to investigate this branch WRT #8074 and #8075 if(r && r.nozip && !qlc._wrap){ return r; } return _zip(r); // dojo.NodeList";s:7:"summary";s:182:"Returns nodes which match the given CSS3 selector, searching the entire document by default but optionally taking a node to scope the search by. Returns an instance of dojo.NodeList.";s:11:"description";s:3162:"dojo.query() is the swiss army knife of DOM node manipulation in Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's "$" function, dojo.query provides robust, high-performance CSS-based node selector support with the option of scoping searches to a particular sub-tree of a document. Supported Selectors: -------------------- dojo.query() supports a rich set of CSS3 selectors, including: * class selectors (e.g., `.foo`) * node type selectors like `span` * ` ` descendant selectors * `>` child element selectors * `#foo` style ID selectors * `*` universal selector * `~`, the immediately preceeded-by sibling selector * `+`, the preceeded-by sibling selector * attribute queries: * `[foo]` attribute presence selector * `[foo='bar']` attribute value exact match * `[foo~='bar']` attribute value list item match * `[foo^='bar']` attribute start match * `[foo$='bar']` attribute end match * `[foo*='bar']` attribute substring match * `:first-child`, `:last-child`, and `:only-child` positional selectors * `:empty` content emtpy selector * `:checked` pseudo selector * `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations * `:nth-child(even)`, `:nth-child(odd)` positional selectors * `:not(...)` negation pseudo selectors Any legal combination of these selectors will work with `dojo.query()`, including compound selectors ("," delimited). Very complex and useful searches can be constructed with this palette of selectors and when combined with functions for manipulation presented by dojo.NodeList, many types of DOM manipulation operations become very straightforward. Unsupported Selectors: ---------------------- While dojo.query handles many CSS3 selectors, some fall outside of what's resaonable for a programmatic node querying engine to handle. Currently unsupported selectors include: * namespace-differentiated selectors of any form * all `::` pseduo-element selectors * certain pseduo-selectors which don't get a lot of day-to-day use: * `:root`, `:lang()`, `:target`, `:focus` * all visual and state selectors: * `:root`, `:active`, `:hover`, `:visisted`, `:link`, `:enabled`, `:disabled` * `:*-of-type` pseudo selectors dojo.query and XML Documents: ----------------------------- `dojo.query` (as of dojo 1.2) supports searching XML documents in a case-sensitive manner. If an HTML document is served with a doctype that forces case-sensitivity (e.g., XHTML 1.1 Strict), dojo.query() will detect this and "do the right thing". Case sensitivity is dependent upon the document being searched and not the query used. It is therefore possible to use case-sensitive queries on strict sub-documents (iframes, etc.) or XML documents while still assuming case-insensitivity for a host/root document. Non-selector Queries: --------------------- If something other than a String is passed for the query, `dojo.query` will return a new `dojo.NodeList` instance constructed from that parameter alone and all further processing will stop. This means that if you have a reference to a node or NodeList, you can quickly construct a new NodeList from the original by calling `dojo.query(node)` or `dojo.query(list)`.";s:14:"return_summary";s:188:"dojo.NodeList An instance of `dojo.NodeList`. Many methods are available on NodeLists for searching, iterating, manipulating, and handling events on the matched nodes in the returned list.";s:7:"returns";s:77:"String|DomNode|Boolean|if root's a doc, we just return directly|dojo.NodeList";s:8:"examples";a:5:{i:0;s:195:"search the entire document for elements with the class "foo": dojo.query(".foo"); these elements will match: ";i:1;s:236:"search the entire document for elements with the classes "foo" *and* "bar": dojo.query(".foo.bar"); these elements will match: while these will not: ";i:2;s:271:"find `` elements which are descendants of paragraphs and which have a "highlighted" class: dojo.query("p span.highlighted"); the innermost span in this fragment matches:...
";i:3;s:228:"set an "odd" class on all odd table rows inside of the table `#tabular_data`, using the `>` (direct child) selector to avoid affecting any nested tables: dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd");";i:4;s:132:"remove all elements with the class "error" from the document and store them in a list: var errors = dojo.query(".error").orphan();";}}s:23:"dojo._filterQueryResult";a:5:{s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:8:"nodeList";a:1:{s:4:"type";s:0:"";}s:12:"simpleFilter";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:233:" var tmpNodeList = new d._queryListCtor(); var filterFunc = getSimpleFilterFunc(getQueryParts(simpleFilter)[0]); for(var x = 0, te; te = nodeList[x]; x++){ if(filterFunc(te)){ tmpNodeList.push(te); } } return tmpNodeList;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:17:"currentPart.query";a:1:{s:7:"summary";s:0:"";}s:19:"currentPart.pseudos";a:1:{s:7:"summary";s:0:"";}s:17:"currentPart.attrs";a:1:{s:7:"summary";s:0:"";}s:19:"currentPart.classes";a:1:{s:7:"summary";s:0:"";}s:15:"currentPart.tag";a:1:{s:7:"summary";s:0:"";}s:16:"currentPart.oper";a:1:{s:7:"summary";s:0:"";}s:14:"currentPart.id";a:1:{s:7:"summary";s:0:"";}s:18:"currentPart.getTag";a:3:{s:4:"type";s:8:"Function";s:6:"source";s:52:" return (caseSensitive) ? this.otag : this.tag;";s:7:"summary";s:0:"";}s:11:"currentPart";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:8:"_cp.attr";a:1:{s:7:"summary";s:0:"";}s:3:"_cp";a:3:{s:4:"type";s:6:"Object";s:7:"private";b:1;s:7:"summary";s:0:"";}s:8:"_cp.name";a:1:{s:7:"summary";s:0:"";}s:9:"_cp.value";a:1:{s:7:"summary";s:0:"";}s:4:"dojo";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}