code: function (element, event, callback, useCapture, filterFunction) {
                  var added = false;
                  var parent = element.parentElement || element.parentNode; // Fx < 9 compat
                  while (parent != null) {
                      if (!filterFunction || filterFunction(parent)) {
                          added = this.addListener(parent, event, callback, useCapture) || added;
                      }
                      parent = parent.parentElement || parent.parentNode; // Fx < 9 compat
                  }
                  return added;
              }
docs: Appends an event handler to the given element and its ancestors. Note that in general you should prefer
  to use event delegation pattern for performance reasons. Use this method only for events that do not
  bubble.
  @param {HTMLElement} element an element reference to assign the listener to.
  @param {String} event The type of event to append
  @param {aria.utils.Callback|Object} callback The method the event invokes, if callback is of type Object
  fn property is mandatory. <strong>Note that callback parameter cannot be a function - the form { fn :
  {Function}, scope: {Object}, args : {MultiTypes}} is preferred for this callback</strong>
  @param {Boolean} useCapture capture or bubble phase
  @param {Function} filterFunction function used to select HTML elements to append the listener to (it
  selects all the elements if the function is not provided)
  @return {Boolean} True if at least one listener was added, false otherwise.