Dojo recursive DOM Walk
Example of Dojo Recursive DOM Walk. http://jbs-trash.blogspot.com/2012/04/recursive-dom-walk-with-dojo.html
by joshuaboshi
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojox/grid/resources/claroGrid.css">
<div id="tag">
Hello!
<span>this is tag</span>
<b>this is <span>another</span></b>
<ul>
<li>test</li>
<li>test</li>
<li><span>test</span></li>
<li>test</li>
<li>test</li>
</ul>
</div>
JavaScript
require([
"dojo/_base/lang",
"dijit/form/Button",
"dojo/query",
"dojo/NodeList-traverse",
"dojo/domReady!"
], function(lang, Button, query) {
var NodeList = query.NodeList;
lang.extend(NodeList, {
_walk: function(node, func) {
func(node);
node = query(node).children().first()[0];
while (node) {
this._walk(node, func);
node = query(node).next()[0];
}
},
walk: function(func) {
this.forEach(function(node) {
this._walk(node, func);
}, this);
}
});
var btn = new Button({
label: 'walk',
onClick: function() {
query('#tag').walk(function (node) {
console.log(node);
});
}
}).placeAt(document.body);
})