Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
224 views
in Technique[技术] by (71.8m points)

TypeScript: Using jquery $(this) in event

HTML:

<div>
<button data-id="3">Click Me</button>
</div>

In classic jQuery I would do:

$("div").on("click","button", test);

function test(){
   alert($(this).data("id"));
}

To get the data-id of the clicked element

In TypeScript (in a class) I use:

class foo { ...
 $("div").on("click", "button", (event) => this.test());

 public test(){
    alert($(this).data("id")); // "undefined"
    console.log($(this));
 }

....
}

Here I don't get the clicked element - $(this) is the instance of the class.

What did I do wrong?

question from:https://stackoverflow.com/questions/22843255/typescript-using-jquery-this-in-event

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

According to Typescript's spec "this" is referring to the instance of class the method belongs to/is called on.

You could use the target attribute of the event object passed to the callback:

class foo {
  public test(evt){
    alert($(evt.target).data("id")); // "undefined"
    console.log($(evt.target));
  }
}

Or event.currentTarget depending on if you want to get the element actually clicked on or the element which captured the event.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...