Click delegation with bubbling

In notebook:
Work Notes
Created at:
2016-11-07
Updated:
2016-11-07
Tags:
JavaScript
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);
}