HTML:
<div>
<button data-id="3">Click Me</button>
</div>
Nel classico jQuery vorrei fare:
$("div").on("click","button", test);
function test(){
alert($(this).data("id"));
}
Per ottenere l'data-id
dell'elemento cliccato
a macchina (in una classe) Io uso:
class foo { ...
$("div").on("click", "button", (event) => this.test());
public test(){
alert($(this).data("id")); // "undefined"
console.log($(this));
}
....
}
Qui non viene visualizzato l'elemento su cui si fa clic: $(this)
è l'istanza della classe.
Cosa ho fatto di sbagliato?
Non si fa niente di sbagliato, è un po 'troppo utile per TypeScript. I metodi di classe interna "questo" vengono trattati come se si riferissero sempre all'oggetto corrispondente. Quindi avete due soluzioni: prendere l'elemento cliccato con la proprietà 'event.target' o definire la funzione di gestore al di fuori di quella classe. – raina77ow
Come posso vedere la maggior parte delle risposte sono incomplete o errate. per favore visita la mia risposta qui: http://stackoverflow.com/questions/38159416/using-the-this-in-event-handler-with-typescript/38159643?noredirect=1#comment63747929_38159643 –