May 10
2007 01:41
·

(3,374 views)
This example shows different approaches to attaching and detaching events: manual events observing, using Prototype, and solution by Dean Edwards.
Take into account that there are 5000 elements in the list, and in real-world applications you should not use such amount (or you have to redesign your application).
There are three buttons you could see below: “manually” would start manual events attaching function, “prototype.js” — attaching events using Prototype JavaScript framework, “addEvent” — Dean Edwards solution. When you click on any button, corresponding test code will be shown below it.
manually prototype.js addEvent
Attaching time: –. Detaching time: –
// Attaching events
for (var i = items.length; i--; ) {
if (items[i].addEventListener) {
items[i].addEventListener('click', e_onclick, false);
} else if (items[i].attachEvent) {
items[i].attachEvent('onclick', e_onclick);
}
}
// Detaching events
for (var i = items.length; i--; ) {
if (items[i].removeEventListener) {
items[i].removeEventListener('click', e_onclick, false);
} else if (items[i].detachEvent) {
items[i].detachEvent('onclick', e_onclick);
}
}
// Attaching events
for (var i = items.length; i--; ) {
Event.observe(items[i], 'click', e_onclick, false);
}
// Detaching events
for (var i = items.length; i--; ) {
Event.stopObserving(items[i], 'click', e_onclick, false);
}
// Attaching events
for (var i = items.length; i--; ) {
addEvent(items[i], 'click', e_onclick);
}
// Detaching events
for (var i = items.length; i--; ) {
removeEvent(items[i], 'click', e_onclick);
}