delegateEvents(events) {
    if (!events) events = this.events
    this.undelegateEvents()
    for (const key in events) {
      let method = events[key]
      if ((method && method.constructor !== Function)) method = this[events[key]]
      if (!method) continue

      const match = key.match(delegateEventSplitter)
      let eventName = match[1], selector = match[2]
      eventName += '.delegateEvents' + this.cid
      if (selector === '')
        this.$el.on(eventName, method.bind(this))
      else
        this.$el.on(eventName, selector, method.bind(this))

    }
    return this
  }
delegates all the original `events` on `element` to its callbacks
@method delegateEvents
@param {Object} events
@return {UIObject} itself