prototypeJS中的delegate()

时间:2011-07-07 18:46:33

标签: javascript jquery prototypejs delegation

我已经习惯了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);
});

Prototype中的等效代码是什么?

1 个答案:

答案 0 :(得分:2)

Prototype的理念是,你只需要添加跨浏览器抽象(再加上每年发布一次,加上污染原生原型),就像纯javaScript一样。

所以Prototype中没有delegate你可以使用Event#findElement

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

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

修改:原型中的 delegatehttp://api.prototypejs.org/dom/Event/on/

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