Javascript 使用prototype将click函数绑定到锚定标记中的所有元素

Javascript 使用prototype将click函数绑定到锚定标记中的所有元素,javascript,prototypejs,Javascript,Prototypejs,我有如下html: <ol id="test-ol"> <li> <a href="http://example.com"> <span class="myspan">test</span> not in span <span class="myspan">test2</span> </a>

我有如下html:

<ol id="test-ol">
    <li>
        <a href="http://example.com">
            <span class="myspan">test</span>
            not in span
            <span class="myspan">test2</span>
        </a>
    </li>
    ...
</ol>
单击锚标记中的非span部分将记录右href,但单击span中的“测试”部分将返回null

那么,如何将单击功能绑定到锚标记中的所有元素呢

onToolbarClick = function(event){
    var href = this.getAttribute('href');
    console.log(href);
    Event.stop(event);
}
对于prototype 1.6.0及更高版本。

请尝试以下操作:

Event.on('test-ol', 'click', 'a', onToolbarClick);


有关更多详细信息,请查看文档,特别是
选择器
回调
参数的说明。

this.getAttribute不是函数-Prototype 1.7Ok,您使用哪个版本的原型?我建议不需要
bind
,因为
onToolbarClick
不使用它的上下文,并且没有迹象表明在绑定时使用了
。在OP的代码中,使用
this
可能会与jQuery的
$混淆。为每个元素设置上下文的每个
,这里都是
未定义的
窗口
@clockworkgeek您可能是对的。我已经更新了我的答案,删除了
bind
注释,使我的答案更简单。但它可能应该是
Event.on($('test-ol'),'click','a',onToolbarClick)
@MOmann是的,你是对的-元素或id字符串,不一定是选择器。我已经编辑了我的答案。很乐意帮忙。
Event.on('test-ol', 'click', 'a', onToolbarClick);
onToolbarClick = function(event, element){
    var href = element.readAttribute('href');
    console.log(href);
    event.stop();
}