       # Process `$triggers` and setup content, event, and positioning aspects.
       processTrigger = ($trigger) =>
         return no if not $trigger.length
+      @_bindTriggers()
         $trigger.addClass @classNames.trigger
         @_saveTriggerContent $trigger
         @_updateDirectionByTrigger $trigger
-        if @shouldDelegate is no then @_bindTrigger $trigger
       # Do this for initially provided triggers.
       @$triggers.each (i, el) => processTrigger $(el)
       # If `doLiveUpdate` is inferred to be true, process triggers added in the

      # - `triggerContent` can be the name of the trigger element's attribute or a
      #   function that provides custom content when given the trigger element.
      triggerContent: null
      # - `shouldDelegate` is by default and encouraged to be on for improving
      #   event handling performance.
      shouldDelegate: on
      # - `ms.duration` are the durations of sleep and wake animations.
      # - `ms.delay` are the delays before sleeping and waking.
      ms:

          offset.top += $trigger.outerHeight()
      offset

    # Extend `_bindTriggers` to get initial position for snapping. This is only
    # for snapping without snapping to the trigger, which is only what's
    # currently supported. See `afterShow` hook.
    _bindTriggers: ->
      super()
      selector = ".#{@classNames.trigger}"
      # Modify base binding.
      @$context.on @evt('truemouseleave'), selector, { selector },
        (event) => @_offsetStart = null

    # Extend `_positionToTrigger` to set `cursorHeight` to 0, since it won't
