Implement MooTools’ Elements.addEvent in jQuery

By  on  

One thing that I've always disliked about the jQuery JavaScript framework is its syntax for adding event listeners to elements. The way to add a click event to an element using jQuery is:

$('#myElement').click(function() {
	//do work
});

I love OOP so the above code tells me that a click is being triggered, not that it's going to add a listener to the element. There's nothing wrong with jQuery using that syntax; I simply don't prefer it. What I do when I need to work with jQuery is Moo-ify its syntax when I can. Here's how you can implement MooTools' "addEvent" syntax in MooTools.

The jQuery JavaScript

jQuery.fn.addEvent = jQuery.fn.bind; //updated

We add the "addEvent" function to the jQuery.fn object. Pretty simple.

The Usage

$(document).ready(function() {
	$('#myElement').addEvent('click',function(){ alert('w00t'); });
});

Looks a lot like MooTools, no? If you like jQuery's syntax of .click() type events, read my post: Implementing jQuery-Like Event Syntax in MooTools

Recent Features

  • By
    How to Create a RetroPie on Raspberry Pi – Graphical Guide

    Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices.  While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo...

  • By
    An Interview with Eric Meyer

    Your early CSS books were instrumental in pushing my love for front end technologies. What was it about CSS that you fell in love with and drove you to write about it? At first blush, it was the simplicity of it as compared to the table-and-spacer...

Incredible Demos

  • By
    CSS Gradients

    With CSS border-radius, I showed you how CSS can bridge the gap between design and development by adding rounded corners to elements.  CSS gradients are another step in that direction.  Now that CSS gradients are supported in Internet Explorer 8+, Firefox, Safari, and Chrome...

  • By
    Digg-Style Dynamic Share Widget Using the Dojo Toolkit

    I've always seen Digg as a very progressive website. Digg uses experimental, ajaxified methods for comments and mission-critical functions. One nice touch Digg has added to their website is their hover share widget. Here's how to implement that functionality on your site...

Discussion

  1. More concise :

    jQuery.fn.addEvent = jQuery.fn.bind;

  2. Well put Pierre…well put.

  3. I too prefer verbs like el.setStyle v. el.css. But swapping syntax would totally goof me up!

  4. I don’t get it, why not just use

    $('#myelement').bind('click', function() {...});
    

    It’s even shorter than ‘addEvent’

  5. I agree with Corey, $().bind is exactly what you’re looking for…

  6. Bo Hunter

    I would have to agree, this is nothing more than an alias.

  7. Mysteriously enough in jQuery version 1.4 I get this:

    $(“#website_stock”).addEvent is not a function

    When I set it as just click(fn) it works in Firefox, but not in IE8. It doesn’t return any errors – just the functions do NOT run whatsoever. Same with the bind() option – works in FF on mac, not on IE8.

  8. Pradeep

    Hi David,
    In this site, the two sides with name older and newer and toggle in-out,how to implement it please send me the complete demo with code if possible.
    Thanks in advance

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