JavaScript from Null: Cross-Browser Event Binding
Tutorial Details
- Subject: JavaScript
- Estimated Difficulty: Beginner - Intermediate
- Tutorial Format: 29 Minute Screencast
Download Source Files
The Full Series
In chapter five of this series, we jumped into the muddy world of event listeners. In that episode, we only got our feet wet; however, today, we’ll take things a step further as we implement a far more efficient solution. Along the way, we’ll learn a plethora of new techniques.
As with every JavaScript from Null screencast, it’s not essential that you view the previous entries in the series before watching.
Chapter 6: Cross-Browser Event Binding
Premium Members: Download this Video ( Must be logged in)
Our Final Code
var addEvent = (function( window, document ) {
if ( document.addEventListener ) {
return function( elem, type, cb ) {
if ( (elem && !elem.length) || elem === window ) {
elem.addEventListener(type, cb, false );
}
else if ( elem && elem.length ) {
var len = elem.length;
for ( var i = 0; i < len; i++ ) {
addEvent( elem[i], type, cb );
}
}
};
}
else if ( document.attachEvent ) {
return function ( elem, type, cb ) {
if ( (elem && !elem.length) || elem === window ) {
elem.attachEvent( 'on' + type, function() { return cb.call(elem, window.event) } );
}
else if ( elem.length ) {
var len = elem.length;
for ( var i = 0; i < len; i++ ) {
addEvent( elem[i], type, cb );
}
}
};
}
})( this, document );
// Example Usage
var lis = document.getElementsByTagName('li');
addEvent( window, 'click', function() {
this.style.border = '1px solid red';
});
Please note that this code is slightly revised, based upon some excellent feedback in the comments section.


RoyalSlider – Touch-Enable ... only $12.00 
Wow!! I´ll have to watch this again, quite difficult :(