HTML:
<div>
<button data-id="3">Click Me</button>
</div>
在經典的jQuery,我會做:
$("div").on("click","button", test);
function test(){
alert($(this).data("id"));
}
要獲得點擊的元素的data-id
在打字稿(一類)我用:
class foo { ...
$("div").on("click", "button", (event) => this.test());
public test(){
alert($(this).data("id")); // "undefined"
console.log($(this));
}
....
}
這裏我沒有得到點擊元素 - $(this)
是這個類的實例。
我做錯了什麼?
你不會做任何錯誤 - 這是TypeScript有點太有用。在類內部的方法'this'被視爲總是引用相應的對象。所以你有兩個解決方案 - 或者用'event.target'屬性捕獲單擊的元素,或者定義該類之外的處理函數。 – raina77ow
正如我所看到的,大部分答案都是不完整或錯誤的。請訪問我的答案在這裏:http://stackoverflow.com/questions/38159416/using-the-this-in-event-handler-with-typescript/38159643?noredirect=1#comment63747929_38159643 –