Какие библиотеки JavaScript имеют делегирование событий? - PullRequest
5 голосов
/ 20 июня 2009

Я бы хотел попробовать новую библиотеку JavaScript. Использовав (и полюбив) j «живые» события Query 1.3 , я бы предпочел следующую библиотеку, в которой я пытаюсь встроить делегирование событий в систему событий. Сравнение библиотек JS из Википедии здесь не подходит.

Похоже, MooTools получает его в 2.0 . А как насчет других?

Я делаю это сообщество вики. Пожалуйста, помогите мне заполнить список.

Прототип: нет

JQuery: по состоянию на 1,3

MooTools: по состоянию на 2.0

ExtJS: да

Ответы [ 5 ]

2 голосов
/ 26 июня 2009

Я бы посоветовал изучить Прототип . Он указан в SO примерно так же часто, как jQuery, и я использую его в качестве библиотеки JS для всех своих проектов.

Я не верю, что в него встроены делегаты, но это полнофункциональная библиотека со всеми необходимыми функциями для добавления делегатов при необходимости.

2 голосов
/ 20 июня 2009

Делегирование событий проще, чем вы думаете.

Если я нахожу библиотеку без автоматического делегирования события, я просто добавляю к ней слой.

1 голос
/ 28 июня 2009

Ext Js всегда верю.

1 голос
/ 27 июня 2009

Делегирование событий - это просто подвешивание обработчиков событий вверх по дереву 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. Библиотеки просто добавляют сахар.

1 голос
/ 27 июня 2009

Если вы любите использовать Jquery, но хотите попробовать что-то другое, я бы пошел с mootools, ссылка на плагин делегирования событий Aarons плюс его руководство по использованию оригинала должно дать вам все необходимое Существует много дискуссий о том, что лучше в конце дня, это то, что вы предпочитаете.

Mootools превосходен и имеет несколько хороших плагинов, вы также должны проверить Дэвида Уолша, который много занимается разработкой mootools и Jquery. Он публикует некоторые интересные вещи. http://davidwalsh.name

...