adapter.jquery.coffee

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)