我已经习惯了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中的等效代码是什么?
答案 0 :(得分:2)
Prototype的理念是,你只需要添加跨浏览器抽象(再加上每年发布一次,加上污染原生原型),就像纯javaScript一样。
所以Prototype中没有你可以使用Event#findElement。delegate
。
$('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) {
// ...
});