Skip to content


Subversion checkout URL

You can clone with
Download ZIP
ender's client-side code
Branch: master
Failed to load latest commit information.
.gitignore - add JSHint for ensuring we didn't break this mo'
bower.json bower.json
bridge.js adds semi colon to help uglify not break
ender.js use @expose instead of string exporting, otherwise we break concatena…
make.js remove unused tests. clean up licensing. update docs to ender-core
package.json upgrade to 2.0.0


This is the home of Ender's client code. It's what provides the glue for pulling together otherwise independent modules into a single cohesive library.


To create top level methods, like for example $.myUtility(...), you can hook into Ender by calling the ender method:

!function ($) {
    myUtility: myLibFn

(note - this is the default integration if no bridge is supplied)

The Internal chain

Another common case for Plugin developers is to be able hook into the internal collection chain. To do this, simply call the same ender method but pass true as the second argument:

!function ($) {
  $.ender(myExtensions, true);

Within this scope the internal prototype is exposed to the developer with an existing elements instance property representing the node collection. Have a look at how the Bonzo DOM utility does this. Also note that the internal chain can be augmented at any time (outside of this build) during your application. For example:

<script src="ender.js"></script>
// an example of creating a utility that returns a random element from the matched set
!function ($) {

    rand: function () {
      return this[Math.floor(Math.random() * (this.length))];
  }, true);


Selector Engine API

Ender also exposes a unique privileged variable called $._select, which allows you to set the Ender selector engine. Setting the selector engine provides ender with the $ method, like this:

$('#foo .bar')

Setting the selector engine is done like so:

$._select = mySelectorEngine;

You can see it in practice inside Qwery's ender bridge

If you're building a Mobile Webkit or Android application, it may be a good idea to simply set it equal to QSA:

$._select = function (selector, root) {
  return (root || document).querySelectorAll(selector);


Ender (the wrapper) is licensed under MIT. For individual modules, see respective module licenses.

Something went wrong with that request. Please try again.