Событие, связанное с делегацией, предназначено только для размещения обработчиков событий далее по дереву DOM. Все рамки могут/должны быть в состоянии сделать это. Обработчики должны иметь возможность отображать любое событие, которое пузырится. Событие содержит элемент, который вызвал его, и от этого обработчик может делать что угодно.
Прототип не имеет каких-либо событий, связанных с сахаром, родным для библиотеки, который работает как jQuery's $.fn.live
, но довольно просто построить функцию, которая ловит события и наполняет их целевыми элементами.
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 уже. Библиотеки просто добавляют сахар.
ОК. Тогда в каких библиотеках нет делегирования событий? :-) – Nosredna