Делегирование событий - это просто подвешивание обработчиков событий вверх по дереву DOM. Все структуры могут / должны быть в состоянии сделать это. Обработчики должны быть в состоянии уловить любое событие, которое пузырится. Событие содержит элемент, который его вызвал, и из этого обработчик может делать что угодно.
Prototype не имеет никакого встроенного в библиотеку сахара делегирования событий, который работает как $.fn.live
в jQuery, но довольно просто создать функцию, которая перехватывает события и наполняет их целевыми элементами.
document.observe('click',function(event){alert(event.element().inspect())})
Вы можете использовать это, чтобы довольно легко сделать клон жизни jQuery (я не говорю, что это будет хорошо или что-то в этом роде).
live = function(selector,callback){
document.observe("click",function(e){
var element = e.element()
if (!element.match(selector))
element = element.ancestors().find(function(elem){return elem.match(selector)});
else
element = null
if (element)
callback.apply(element)
})
}
Вы можете назвать это как:
live("div",function(){this.setStyle({color:'blue'})})
Полагаю, я хочу сказать, что делегирование событий уже встроено в javascript. Библиотеки просто добавляют сахар.