Какие библиотеки JavaScript имеют делегацию события?

Предупрежден и предупрежден: Еще один вид, функциональный стиль.

То, что в ссылке, не отвечает на ваш вопрос напрямую, но тривиально расширить его, чтобы он выглядел следующим образом:

static void Main() 
{ 
    Action body = () => { ...your code... };

    body.Catch() 
        .Catch() 
        .Catch(ex => { ...handler... })(); 
}

(В основном, предоставляет еще одну пустую перегрузку Catch, которая возвращает сама себя )

Большой вопрос к этому - , почему . Я не думаю, что стоимость перевешивает выигрыш здесь:)

5
задан 5 revs, 2 users 94% 28 June 2009 в 15:14
поделиться

5 ответов

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

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

2
ответ дан 14 December 2019 в 08:58
поделиться

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

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

2
ответ дан 14 December 2019 в 08:58
поделиться

Делегирование событий сводится к вывешиванию обработчиков событий дальше вверх по дереву DOM. Все фреймворки могут / должны это делать. Обработчики должны иметь возможность улавливать любое всплывающее событие. Событие содержит элемент, который его инициировал, и, исходя из этого, обработчик может делать все, что угодно.

Prototype не имеет никакого собственного сахара делегирования событий для библиотеки, которая работает как jQuery $. 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. Библиотеки просто добавляют сахар.

1
ответ дан 14 December 2019 в 08:58
поделиться

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

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

1
ответ дан 14 December 2019 в 08:58
поделиться

Ext Js всегда есть, я верю.

1
ответ дан 14 December 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: