Prototype’s Element.on with MooTools

By  on  

Prototype 1.7RC1 was released on Monday. While the big news with this release appears to be the implementation of John Resig's Sizzle selector engine, what caught my eye was the new on method. This new Element.on method is very similar to Prototype's Element.observe method but with a few enhancements (event relaying, event stop). While I don't necessarily care about the enhancements, I simply love that the event method is called "on." Using "on" as the method name makes it sound more like the event itself. Here's how easy it is to use "on" instead of "addEvent" for your events.

The MooTools JavaScript

/* the directive */
Element.alias('addEvent','on');

/* the usage */
$('myElement').on('click',fn);

Using on instead of addEvent is as easy as a quick MooTools Element.alias directive.

It's weird that I like "on" so much considering a generally don't like jQuery's css and attr methods. Oh well. Congrats to the Prototype team for their impending release.

Recent Features

  • By
    Facebook Open Graph META Tags

    It's no secret that Facebook has become a major traffic driver for all types of websites.  Nowadays even large corporations steer consumers toward their Facebook pages instead of the corporate websites directly.  And of course there are Facebook "Like" and "Recommend" widgets on every website.  One...

  • By
    9 Mind-Blowing WebGL Demos

    As much as developers now loathe Flash, we're still playing a bit of catch up to natively duplicate the animation capabilities that Adobe's old technology provided us.  Of course we have canvas, an awesome technology, one which I highlighted 9 mind-blowing demos.  Another technology available...

Incredible Demos

  • By
    MooTools Zebra Table Plugin

    I released my first MooTools class over a year ago. It was a really minimalistic approach to zebra tables and a great first class to write. I took some time to update and improve the class. The XHTML You may have as many tables as...

  • By
    jQuery topLink Plugin

    Last week I released a snippet of code for MooTools that allowed you to fade in and out a "to the top" link on any page. Here's how to implement that functionality using jQuery. The XHTML A simple link. The CSS A little CSS for position and style. The jQuery...

Discussion

  1. Lorenzo S.

    Hi David. Nice idea. I like also css() and other jQuery methods’ name (for their simplicity), but I prefer Mootools core. So, why not:

    Element.alias('addEvent','on'); 
    Element.implement({
      'css': function(p, v) {
        if (v == undefined) return this.getStyle(p);
        else return this.setStyle(p, v);
      },
      'attr': function(a, v) {
        if (v == undefined) return this.getProperty(a);
        else return this.setProperty(a, v);
      },
      'html': function(h) {
        if (h == undefined) return this.get('html');
        else return this.set('html', h);
    });
    

    What do you think?

  2. @Lorenzo S.: I’ve done posts like that in the past. I can’t stand .css and .attr for MooTools, but what you have would work.

  3. Arian

    @Lorenzo S.: If you want jQuery syntax in MooTools, have a look at this repository: http://github.com/cheeaun/mooj/blob/master/mooj.js

  4. Nikolaj

    @David

    Fully agree with “on” seems acceptable, whereas .css, .attr etc. doesn’t :)

    I guess the reason you might like “on” – when not other jQuery shortcuts – might be due to we’re used to “on” in “onClick” etc. for regular JavaScript, which probably makes the mind having positive thoughts.

  5. Great advice, thanks a lot.

    However, how much slower will this be? I mean, will on() trigger addEvent() and that in turn will trigger whatever internal functions are used?

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!