原型 - 通过元素类名点击事件

12

我刚开始接触原型框架,并尝试做一些非常简单的操作,但都失败了。我想要响应一个按钮的点击事件:

$$('.btn').observe('click', respond);
function respond(event) {
    alert("hello");
}

为什么这个不起作用?请帮忙!

2个回答

22

与jQuery不同的是,使用Prototype处理多个结果的选择器需要有所区别。你需要使用.each()单独处理每个选择的结果。

$$('.btn').each(function(element) {
    element.observe('click', respond);
})

这是我转向jQuery的原因之一。另一个原因是,掌握jQuery具有市场价值,而掌握Prototype则没有。


1
这太愚蠢了。谢谢。我来自jQuery背景,但被迫在即将到来的项目中使用Prototype - 从我所看到的来看,它在DOM操作方面远远落后于jQuery。 - David
此外 - 从我所看到的文档中没有提到这一点! - David
我不会说它落后太多。它可以做到所有相同的事情,但不像jQuery那样简洁。在jQuery出现之前,我曾经使用过它。那时它是迄今为止最好的选择。但是,使用jQuery做事情确实容易得多。 - Diodeus - James MacFarlane
你同样也可以使用“invoke”来完成相同的事情。http://api.prototypejs.org/language/zh-cn/enumerable/prototype/invoke/ - Diodeus - James MacFarlane
啊,谢谢!我为这个问题挣扎了太久了(我也来自jQuery)。讽刺的是,这个旨在优雅设计的框架的JS库比jQuery不够优雅。 - Justin
1
原型设计早已问世,因此jQuery有很多可以依据的基础。 - Diodeus - James MacFarlane

13

正如其他人在评论中已经建议的那样,这也可以用单行代码完成:

$$('.btn').invoke('observe', 'click', respond);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接