Click delegation with bubbling
Here's a minimal code I used to delegate clicks based on the
rel
attribute:
function listenClick(rel_target, cb) {
function checkRel(element) {
if (element.nodeType !== 9 && element.hasAttribute("rel") && (element.getAttribute("rel").lastIndexOf(rel_target) > -1)) {
return true;
} else {
return false;
}
}
function delegate(event) {
var el = event.target;
do {
if (!checkRel(el)) {
el = el.parentNode;
continue;
}
cb(el.getAttribute("rel"));
return;
} while (el);
}
document.body.addEventListener("click", delegate, true);
}