делегат () в PrototypeJS - PullRequest
       6

делегат () в PrototypeJS

3 голосов
/ 07 июля 2011

Я привык к jQuery , который имеет метод delegate().Допустим, у меня есть HTML, подобный этому:

<div id="covers">
   <a href="#"><img ... /></a>
   <a href="#"><img ... /></a>
   <a href="#"><img ... /></a>
   <a href="#"><img ... /></a>
   <a href="#"><img ... /></a>
   <a href="#"><img ... /></a>
   ...lots anchors here...
</div>

В jQuery я могу связывать события с родительским div и не привязывать отдельные обработчики к новым, динамически добавленным якорям, используя delegate(), например так:

$('#covers').delegate('a', 'click', function(){
   /// stuff I want to do
   var clickedAnchor = $(this);
});

Каким будет эквивалентный код в Прототип ?

1 Ответ

2 голосов
/ 07 июля 2011

Философия Prototype заключается в том, что вы делаете это больше как в чистом javaScript только с добавлением кросс-браузерных абстракций (плюс выпуск раз в год, плюс загрязнение собственных прототипов).

То есть в прототипе нет delegate. Вы можете использовать Event # findElement , хотя.

$('covers').observe('click', function (event) {
  var link = event.findElement('a');

  if (link) {
      // ...
  }
});

Редактировать: Там есть delegate в прототипе: http://api.prototypejs.org/dom/Event/on/!

$('covers').on('click', 'a', function (event, element) {
   // ...
});
...