Jump To …
adapter.ender.coffee adapter.jquery.coffee adapter.native.coffee adapter.prototype.coffee opentip.coffee

# adapter.jquery.coffee

¶

# jQuery Opentip Adapter

Uses jQuery

¶

Because $ is my favorite character

    (($) ->

¶

Augment jQuery

      $.fn.opentip = (content, title, options) ->
        new Opentip this, content, title, options

¶

And now the class

      class Adapter

        name: "jquery"

¶

Simply using $.domReady

        domReady: (callback) -> $ callback

¶

# DOM

¶

Using bonzo to create html

        create: (html) -> $ html

¶

## Element handling

¶

Wraps the element in ender

        wrap: (element) ->
          element = $ element
          throw new Error "Multiple elements provided." if element.length > 1
          element

¶

Returns the unwrapped element

        unwrap: (element) -> $(element)[0]

¶

Returns the tag name of the element

        tagName: (element) -> @unwrap(element).tagName

¶

Returns or sets the given attribute of element

It's important not to simply forward name and value because the value is set whether or not the value argument is present

        attr: (element, args...) -> $(element).attr args...

¶

Returns or sets the given data of element It's important not to simply forward name and value because the value is set whether or not the value argument is present

        data: (element, args...) -> $(element).data args...

¶

Finds elements by selector

        find: (element, selector) -> $(element).find selector

¶

Finds all elements by selector

        findAll: -> @find.apply @, arguments

¶

Updates the content of the element

        update: (element, content, escape) ->
          element = $ element
          if escape
            element.text content
          else
            element.html content

¶

Appends given child to element

        append: (element, child) -> $(element).append child

¶

Add a class

        addClass: (element, className) -> $(element).addClass className

¶

Remove a class

        removeClass: (element, className) -> $(element).removeClass className

¶

Set given css properties

        css: (element, properties) -> $(element).css properties

¶

Returns an object with given dimensions

        dimensions: (element) ->
          {
            width: $(element).outerWidth()
            height: $(element).outerHeight()
          }

¶

Returns the scroll offsets of current document

        scrollOffset: ->
          [
            window.pageXOffset or document.documentElement.scrollLeft or document.body.scrollLeft
            window.pageYOffset or document.documentElement.scrollTop or document.body.scrollTop
          ]

¶

Returns the dimensions of the viewport (currently visible browser area)

        viewportDimensions: ->
          {
            width: document.documentElement.clientWidth
            height: document.documentElement.clientHeight
          }

¶

Returns an object with x and y

        mousePosition: (e) ->
          return null unless e?
          x: e.pageX, y: e.pageY

¶

Returns the offset of the element

        offset: (element) ->
          offset = $(element).offset()
          {
            left: offset.left
            top: offset.top
          }

¶

Observe given eventName

        observe: (element, eventName, observer) -> $(element).bind eventName, observer

¶

Stop observing event

        stopObserving: (element, eventName, observer) -> $(element).unbind eventName, observer

¶

Perform an AJAX request and call the appropriate callbacks.

        ajax: (options) ->
          throw new Error "No url provided" unless options.url?
          $.ajax(
            url: options.url
            type: options.method?.toUpperCase() ? "GET"
          )
            .done((content) -> options.onSuccess? content)
            .fail((request) -> options.onError? "Server responded with status #{request.status}")
            .always(-> options.onComplete?())

¶

# Utility functions

¶

Creates a shallow copy of the object

        clone: (object) -> $.extend { }, object

¶

Copies all properties from sources to target

        extend: (target, sources...) -> $.extend target, sources...

¶

Add the adapter to the list

      Opentip.addAdapter new Adapter

    )(jQuery)