我们开始使用typescript,因为它很容易编译成模块,我们也开始使用requirejs。有没有办法直接在html中绑定事件?像
<a href="#" onclick="foo.bar();">
<img src="foo.png" alt="foo">
</a>
动态设置它通常没有问题
$("foo.selector").click((e) => {
this.bar();
e.preventDefault();
});
但我们碰巧有2-3页,其中我们有多达数百(thousnds)的表行和最多10个不同的事件/行。只是设置事件需要0.5秒(可能看起来不是很多,但与其他页面部分和东西一起很多)。我已经尝试将其移动到“按需”设置,其中所有行都有mouseover => setup all the events
但是效果不好。我没有任何优化想法,只有一个,将evnet绑定移动到html并在呈现代码后准备好它们。无论如何,require块的内部似乎都不受此行为的影响。
有没有办法可以在html中使用它?
答案 0 :(得分:0)
一般来说,使用像onclick
这样的事件处理属性是个不错的主意,人们正在试图摆脱这种方法。
如果您需要动态处理点击并且您不希望(或不能)将事件侦听器直接分配给元素,请考虑使用事件委派。有点像那样
$(document).on('click', "foo.selector", function(event) {
event.preventDefault();
console.log("You clicked:", this);
});
基本上在这种情况下,您在document
对象上定义一个事件侦听器,它与页面上指定类型(如果有)的项目无关。在定义监听器后,它还将自动处理添加到页面的任何新元素。