该任务与 this post中的任务相同:捕获点击链接并阻止浏览器的默认行为。给定有答案是这样的:如何在执行代理事件之前执行preventDefault?
模板:
<a on-click='sayHello' href="#">Activate!</button>
JS:
ractive.on('sayHello', function (event) {
event.original.preventDefault();
alert('Hello world!');
});
的问题是,sayHello
事件处理程序不应该知道什么原始的事件了。代理的重点在于事件处理程序不应该关心原始事件的类型。例如,我将链接更改为一个按钮,不再需要preventDefault
。
所以,我的问题是如何在触发事件代理之前或之后调用preventDefault。
一个很好的解决办法是火几个事件代理连胜(如果有可能):
模板:
<a on-click='preventDefault;sayHello' href="#">Activate!</button>
JS:
ractive.on('preventDefault', function (event) {
event.original.preventDefault();
});
ractive.on('sayHello', function (event) {
alert('Hello world!');
});
这是可能以某种方式?还是有其他一些很好的解决方案?
哇,谢谢,似乎是个好主意! :)但是,你不需要一个原始的:e在fire()参数中? –
当然,我以为你会选择“事件处理程序不应该关心原始事件的类型”的样式。见http://jsfiddle.net/ka2Pu/6/。 – martypdx
但不,不是必需的。 – martypdx