adapter.jquery.coffee |
|
---|---|
jQuery Opentip AdapterUses 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)
|