HTML:
<div>
<button data-id="3">Click Me</button>
</div>
Trong kinh điển jQuery tôi sẽ làm:
$("div").on("click","button", test);
function test(){
alert($(this).data("id"));
}
Để có được data-id
của phần tử nhấp
Trong nguyên cảo (trong một lớp học) tôi sử dụng:
class foo { ...
$("div").on("click", "button", (event) => this.test());
public test(){
alert($(this).data("id")); // "undefined"
console.log($(this));
}
....
}
Ở đây tôi không nhận được phần tử được nhấp - $(this)
là phiên bản của lớp.
Tôi đã làm gì sai?
Bạn không làm gì sai - đó là TypeScript quá hữu ích. Các phương thức lớp bên trong 'this' được xử lý như thể nó luôn đề cập đến đối tượng tương ứng. Vì vậy, bạn có hai giải pháp - hoặc là nắm bắt phần tử được nhấp với thuộc tính 'event.target' hoặc xác định hàm xử lý bên ngoài lớp đó. – raina77ow
Như tôi có thể thấy hầu hết các câu trả lời là không đầy đủ hoặc sai. vui lòng truy cập câu trả lời của tôi ở đây: http://stackoverflow.com/questions/38159416/using-the-this-in-event-handler-with-typescript/38159643?noredirect=1#comment63747929_38159643 –