PrototypeJS 中的 delegate()

发布于 2024-11-19 11:39:39 字数 865 浏览 0 评论 0 原文

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

等效代码是什么位于 原型 中吗?

I am used to jQuery, which has a delegate() method. So let's say I have HTML like this:

<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>

In jQuery, I can bind events to the parent div and not attach individual handlers to new, dynamically added anchors using delegate() like so:

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

What would the equivalent code be in Prototype?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み青杉依旧 2024-11-26 11:39:39

Prototype 的理念是,你更像是在纯 JavaScript 中,只是添加了跨浏览器抽象(加上每年发布一次,加上污染了原生原型)。

因此 Prototype 中没有委托您可以使用 Event#findElement 不过。

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

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

编辑:原型中有委托http://api.prototypejs.org/dom/Event/on/

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

Prototype's philosophy is that you do it more like in pure javaScript only with added cross-browser abstractions (plus releasing once a year, plus polluting native prototypes).

So there's no delegate in Prototype. You can use Event#findElement though.

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

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

Edit: There is delegate in Prototype: http://api.prototypejs.org/dom/Event/on/!

$('covers').on('click', 'a', function (event, element) {
   // ...
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文