HTML:
<div> <button data-id="3">Click Me</button> </div>
在经典的jQuery我会做:
$("div").on("click","button",test); function test(){ alert($(this).data("id")); }
获取clicked元素的data-id
在Typescript(在类中)我使用:
class foo { ... $("div").on("click",(event) => this.test()); public test(){ alert($(this).data("id")); // "undefined" console.log($(this)); } .... }
这里我没有得到clicked元素 – $(this)是类的实例。
我做错了什么?
解决方法
根据
Typescript’s spec,“this”指的是该方法属于/被调用的类的实例。
您可以使用传递给回调的事件对象的target属性:
class foo { public test(evt){ alert($(evt.target).data("id")); // "undefined" console.log($(evt.target)); } }
或者event.currentTarget,取决于你想要获取实际点击的元素还是捕获事件的元素。