Прототип-эквивалент для функции jQuery live

Мне нужно привязать прослушиватель событий ко всем динамически созданным элементам с помощью селектора css.

В jQuery это будет

$(".foo").live("click", function(e) {
   // bar
});

Есть ли эквивалент в Prototype для этого?

Ответы

Ответ 1

Обычно это делается с помощью Event#findElement:

document.observe('click', function(e, el) {
  if (el = e.findElement('.foo')) {
    // there your `el`
    // might want to stop event at this point - e.stop()
  }
});

Ответ 2

Правильный ответ на вопрос: http://gurde.com/2011/08/jquery-live-in-prototype/

Эквивалент jQuery .live() в Prototype - это метод Event.on():

var handler = document.on(
    'click',
    'div[id^="post-"] .attached-post-thumbnail',
    function(event, element) {
        console.log(this);
        console.log(element);
    }.bind(this)
);

handler.stop();
handler.start();

Внутри обратного вызова это ключевое слово всегда будет ссылаться на исходный элемент (в этом случае документ).