1. dom selector
In dojo/dom.js, dojo offers dojo.byId() to get the dom element node.
dom.byId = function(id, doc){
// inline'd type check.
// be sure to return null per documentation, to match IE branch.
return ((typeof id == "string") ? (doc || win.doc).getElementById(id) : id) || null; // DOMNode
};
2. query API
dojo/query.js provides the query API to get the NodeList.
var query = queryForEngine(defaultEngine, NodeList);
function queryForEngine(engine, NodeList){
var query = function(/*String*/ query, /*String|DOMNode?*/ root){
// summary:
// Returns nodes which match the given CSS selector, searching the
// entire document by default but optionally taking a node to scope
// the search by. Returns an instance of NodeList.
if(typeof root == "string"){
root = dom.byId(root);
if(!root){
return new NodeList([]);
}
}
var results = typeof query == "string" ? engine(query, root) : query ? query.orphan ? query : [query] : [];
if(results.orphan){
// already wrapped
return results;
}
return new NodeList(results);
};
query.matches = engine.match || function(node, selector, root){
// summary:
// Test to see if a node matches a selector
return query.filter([node], selector, root).length > 0;
};
// the engine provides a filtering function, use it to for matching
query.filter = engine.filter || function(nodes, selector, root){
// summary:
// Filters an array of nodes. Note that this does not guarantee to return a NodeList, just an array.
return query(selector, root).filter(function(node){
return array.indexOf(nodes, node) > -1;
});
};
if(typeof engine != "function"){
var search = engine.search;
engine = function(selector, root){
// Slick does it backwards (or everyone else does it backwards, probably the latter)
return search(root || document, selector);
};
}
return query;
}
3. widget selector
We can find the byId() method in the dijit/registry.js
byId: function(/*String|Widget*/ id){
// summary:
// Find a widget by it's id.
// If passed a widget then just returns the widget.
return typeof id == "string" ? hash[id] : id; // dijit/_WidgetBase
},