 
     # - The tip content will change as it's being refreshed / initialized.
     _inflateByTrigger: ($trigger) ->
-      compoundDirection = if $trigger.data(@attr 'direction') then $trigger.data(@attr 'direction').split(' ') else @defaultDirection
+      compoundDirection = if $trigger.data(@attr('direction')) then $trigger.data(@attr('direction')).split(' ') else @defaultDirection
       @debugLog 'update direction class', compoundDirection
       @$tip
         .find ".#{@classNames.content}"
-          .text $trigger.data @attr 'content'
+          .text $trigger.data @attr('content')
         .end()
         .removeClass [
           @classNames.north

    sizeForTrigger: ($trigger, force=no) ->
      # - Try cached.
      size =
        width:  $trigger.data @attr 'width'
        height: $trigger.data @attr 'height'
      return size if size.width and size.height
      # - Otherwise new.
      @$tip.find(".#{@classNames.content}").text($trigger.data @attr 'content').end()
        .css
          display: 'block',
          visibility: 'hidden'
      $trigger.data @attr('width'),  (size.width = @$tip.outerWidth())
      $trigger.data @attr('height'), (size.height = @$tip.outerHeight())

        $trigger.on 'mousemove', onMouseMove

    # - Bind to the tip on hover so the toggling makes an exception.
    _bind: ->
      @$tip
        .on 'mouseenter', (event) =>
          @debugLog 'enter tip'
