Awesome
dombo
Dombo is a tiny wrapper on the browser, to help work on nodes, similar to jquery. But much closer to the metal of the browser, and a lot less overhead.
It includes a selector, $('.foo')
works the same way as jQuery's selector. It returns an array-like object, but with all the properties of the nodes in the selected set.
It also includes a little sugar from jquery: on
, off
, one
, trigger
, addClass
, removeClass
, hasClass
, toggleClass
.
Example
With some html like
<input class="someInput">
<input class="someInput">
<input class="someInput">
<div class="removeMe">I'm not here</div>
this code
$('.someInput').value = 'foobar'
console.log($('.someInput').value)
$('.removeMe').remove()
will set the value of all the input fields to foobar
, print foobar
, and also remove the div
.
Plugins
It is possible to add methods, to the returned nodes, with the $.fn
object.
E.g, $.fn.foobar = function (this) { ... }
. this
in this case is the array-like dombo object.
Larger plugin example
/*
$('.foo').isHtml('bar')
returns true if .innerHTML of all nodes is 'bar'
*/
$.fn.isHtml = function (str) {
return this.reduce(function (res, node) {
return res && node.innerHTML === str
}, true)
}
Selectors
$(selector[, context])
Returns an array with the matched elements, with the methods in this doc added to it. Returns an empty array if there are no matched elements.
If a context
is given, the selector is only checked in the descendant nodes of that context.
If the selector is already a previous returned value from dombo, then it is simply returned. This makes sure that $('.foo') === $($('.foo'))
.
Added methods
These methods are some extra nice functions that jquery includes today.
If the selector is document
or window
it is also just returned, so you can do $(document)
and $(window)
.
$(selector[, context]).each(fn)
Iterates over all matched elements
$(selector[, context]).on(event, [selector,] fn)
Adds event handler to all matched elements. If selector is given, then the event handler is only run if selector matches child elements.
$(selector[, context]).off(event, fn)
Removes event handler from all matched elements
$(selector[, context]).one(event, [selector,] fn)
Adds event handler to all matched elements, but guarantees it's not called after the first time the event fires.
$(selector[, context]).hasClass(name)
Returns true if one node of the matched elements has the class
$(selector[, context]).addClass(name)
Adds class to all matched elements
$(selector[, context]).removeClass(name)
Removes class from all matched elements
$(selector[, context]).toggleClass(name[, state])
Adds/removes class on the matched elements depending on whether or not it's already present.
State
is a boolean, and if it's set, adds/removes classes accordingly.
Tests
To run the test cases run npm test
and open the browser and go to http://localhost:9966/test
Browser support
Dombo is not aiming for legacy browser support.
This means that it's only compatible with browsers that supports querySelectorAll
and Object.defineProperty
. This is most newer browsers. Check compatability list here https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll#Browser_compatibility and http://caniuse.com/#search=defineproperty
License
MIT