May 10
2007 01:41
·

(3,864 views)
Этот пример демонстрирует разные подходы к подписке и отписыванию от событий: вручную, с использованием Prototype и при помощи кода Dean Edwards.
Учтите, что в списке содержится 5000 элементов, и в реальных приложениях Вы не должны использовать такое количество (или Вам придется перепроектировать приложение).
Ниже Вы найдете три кнопки: “manually” запустит функцию подписки на события вручную, “prototype.js” — подписка с использованием JavaScript фреймворка Prototype, “addEvent” — решение Dean Edwards. Когда Вы нажмете на какую-нибудь кнопку, соответствующий код, используемый для тестирования, будет отображен под ней.
manually prototype.js addEvent
Attaching time: –. Detaching time: –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // 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);
}
} |
1 2 3 4 5 6 7 8
| // 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);
} |
1 2 3 4 5 6 7 8
| // 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);
} |