public
Description: An implementation of event delegation (with fixes for focus/blur/submit/reset events) written with MooTools.
Homepage:
Clone URL: git://github.com/nickstenning/moodelegate.git
nickstenning (author)
Wed Aug 13 09:28:49 -0700 2008
commit  2c0758046e8b7eb98bc9fba20549ce2f0c38d267
tree    9c30fc5e1a2f4676782392a8298ec634e5df2b7c
parent  f8fa1e4807860f2ef7ac2b519c0ae2427c9edbbd
name age message
file README.md Loading commit data...
directory examples/
directory lib/
directory vendor/ Wed Aug 13 09:27:05 -0700 2008 Initial commit [nickstenning]

MooDelegate

A simple library for event delegation using the (MooTools)[http://mootools.net] JavaScript library. At it's simplest, delegator.js implements a #delegate method on Element, so you can call:

$('myelement').delegate('li.delete', 'click', function () {
    this.dispose();
});

This would make sure that any child of 'myelement' that was a list item with the class "delete" would be removed from the DOM when it was clicked. This applies no matter when the list item was added to the DOM: even if it was added after the call to delegate.

A more advanced (and yet simpler) way to use MooDelegate is to use the included Controller class:

HTML:

<div id="textsizeController">
  <span>Hello</span>
  <button id="bigger">Bigger</button>
  <button id="smaller">Smaller</button>
</div>

JS:

var TextSizeController = new Class({
  Extends: Controller,

  // ... see examples/textsize.html for the full example.

  controls: {
      '#bigger click': function () {
        this.increaseSize();
      },
      '#smaller click': function () {
        this.decreaseSize();
      }
  }

});

window.addEvent('domready', function () {
  new TextSizeController($('textsizeController'));
});

OK, so it's a silly example, but you should get the idea. Once you've made that call to new TextSizeController in the above example, you could remove the "bigger" button from the DOM, to prevent the user making the text bigger, and then put it back in, and it would work just as expected.