O'Reilly

MooTools 1.2 Class Template

By on  

Starting a MooTools class can be difficult if you haven't created one before. Here's a template you can copy, paste, and use to create your MooTools classes.

MooTools 1.2 Class Template

var yourClass = new Class({
	
	//implements
	Implements: [Options],

	//options
	options: {
		yourOption: ''
	},
	
	//initialization
	initialize: function(options) {
		//set options
		this.setOptions(options);
	},
	
	//a method that does whatever you want
	yourMethod: function() {
		
	}
	
});

MooTools 1.2 Class Usage Template

	//once the DOM is ready
	window.addEvent('domready', function() {
		var yourInstance = new yourClass({
			yourOption: 'yourValue'
		});
	}
Track.js Error Reporting

Recent Features

  • Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

  • CSS @supports

    Feature detection via JavaScript is a client side best practice and for all the right reasons, but unfortunately that same functionality hasn't been available within CSS.  What we end up doing is repeating the same properties multiple times with each browser prefix.  Yuck.  Another thing we...

Incredible Demos

  • jQuery UI DatePicker:  Disable Specified Days

    One project I'm currently working on requires jQuery. The project also features a datepicker for requesting a visit to their location. jQuery UI's DatePicker plugin was the natural choice and it does a really nice job. One challenge I encountered was the...

  • Control Element Outline Position with outline-offset

    I was recently working on a project which featured tables that were keyboard navigable so obviously using cell outlining via traditional tabIndex=0 and element outlines was a big part of allowing the user navigate quickly and intelligently. Unfortunately I ran into a Firefox 3.6 bug...

Discussion

  1. Great reference point, thanks!

  2. This is something I’ve been curious about for a while with MooTools. What would you use a class for? What determines whether you use a Class or just a function?

    I’m really trying to learn best practices for coding with MooTools and other libraries but I haven’t really found an all encompassing resource…all though this site is quickly becoming a favorite.

  3. I’ve been doing the same thing!

    @Seth, the best explanation I’ve heard is that classes help make your code more readable, reusable, and less complex. That’s the short answer ;)

  4. @Seth: I use classes when I’m creating functionality with options. I also use classes so I can reference objects. It does keep the code cleaner too!

  5. I use classes when I want to reuse the code with other occasions – in same project, or other – with different options
    I use functions when I do more specific tasks, or more simple that a class would be just overhead…

  6. An extra nice post, David. Thanks! (It’s Stumble time!)

  7. Very nice snippet

  8. What about add Extends?

  9. @Imzyos: I don’t extend other classes much.

  10. @Crispjin: Instead of e.addEvent('mouseenter',function() { });, you may want to consider adding a mouseenter event to the class and replace the above with this.fireEvent('mouseenter');.

  11. Crispijn

    I’m not very familiar with the JavaScript/moo syntax so I’m still struggling with your suggestion with the this.fireEvent

    How do I implement this? Where to I leave the “e” variable witch points to the element I would like to change the opacity? The mootools docs couldn’t give me a right example…

    var fadeButtons = new Class({
    
        Implements: [Options],
    
        options: {
            maxopacity: 1,
            minopacity: 0
        },
    
        initialize: function(options){
            this.setOptions(options),
            this.start()
        },
    
        //start the button events
        start: function(){
    
            var list = $$('#buttons div img');
    
            list.each(function(e) {
    
                this.e.fireEvent('mouseenter');
    
                //OLD HABBITS
                /*e.addEvent('mouseenter', function(){
                    e.fade(this.options.minopacity);
                });
    
                e.addEvent('mouseleave', function(){
                    e.fade(this.options.maxopacity);
                });*/
            });
    
        },
    });
    

    Could you give me a kick in the right direction? Thanks anyway!

    Crispijn,
    The Netherlands

  12. Keijo

    Thanks for this. For some reason I’ve been using it quite a lot. Simple things are usually best!

    One thing I noticed is that Dom Ready is missing ); at the end. So you could add that so it does not confuse newcomers with errors if they use this.

  13. Samuel M.

    I have been using mootools for a little bit, and I really like it.

    Thanks for the tutorials, they’re great… Keep them coming.

    Samuel M.

  14. Javier

    Buensimo el ejemplo, sin embargo los métodos no se disparan a menos que agregues
    this.fireEvent('yourMethod'); donde "yourMethod" es el nombre de tu evento.
    Ejemplo.-

    show: function() {
          alert('hacer algo');
          /*al final de la instrucción*/
          this.fireEvent('show'); 
    },
    

    Esto es útil cuando quieres agregar codigo personalizado al ejecutar dicho evento.

  15. Hi,
    This is the tutorial what I am looking for.
    Before some days I have tried to contact you regarding this point. but no reply from your side.
    But after all thanks for this post.
    Thanks
    Avi

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

Recently on David Walsh Blog

  • Serve a Directory via Python

    Sometimes I'm working with a test HTML file and some JavaScript but need to work off of a served space.  In that case, I sometimes need to swap out folders within MAMP Stack which leads to a maintenance nightmare.  Bleh. I recently found out that you can...

  • OSCON Portland:  Conference  Discount!

    O'Reilly puts on the best web industry conferences in the world.  These conferences include Fluent Conference, Velocity Conference, and the upcoming OSCON in Portland, Oregon from July 20-24.  Open Source Convention (OSCON) is a conference that focuses specifically on open source developers and the tools and possibilities...

  • Follow Redirects with cURL

    I love playing around with cURL. There's something about loading websites via command line that makes me feel like some type of smug hacker, just like tweeting from command line does. I recently cURL'd the Google homepage and saw the following: I found it weird that Google...

  • Developers Have WordPress, Amateurs Have Squarespace, Professional Designers Have the NEW Webydo!

    Web design platforms have traditionally come in one of two varieties. There are the solutions like WordPress and Drupal that are incredibly powerful, but an understanding of web development and coding is required to be able to use those platforms effectively. On the other side of the...

  • Chris Coyierâs Favorite CodePen Demos II

    Hey everyone! Before we get started, I just want to say it’s damn hard to pick this few favorites on CodePen. Not because, as a co-founder of CodePen, I feel like a dad picking which kid he likes best (RUDE). But because there is just so...