TypeScript:在事件中使用jquery$(this)
HTML: 获取所单击元素的TypeScript:在事件中使用jquery$(this),jquery,typescript,Jquery,Typescript,HTML: 获取所单击元素的数据id 在TypeScript(类中)中,我使用: 这里我没有得到单击的元素-$(this)是类的实例 我做错了什么?根据“this”是指该方法所属/所调用的类的实例 可以使用传递给回调的事件对象的target属性: class foo { ... $("div").on("click", "button", (event) => this.test()); public test(){ alert($(this).data("id")); //
数据id
在TypeScript(类中)中,我使用:
这里我没有得到单击的元素-$(this)
是类的实例
我做错了什么?根据“this”是指该方法所属/所调用的类的实例
可以使用传递给回调的事件对象的target属性:
class foo { ...
$("div").on("click", "button", (event) => this.test());
public test(){
alert($(this).data("id")); // "undefined"
console.log($(this));
}
....
}
或
event.currentTarget
,具体取决于您是否希望获取实际单击的元素或捕获事件的元素。通过使用箭头函数(event)=>TypeScript
,您可以从词汇上对此进行绑定。(在编译代码中,以前捕获的实例称为\u this
)
如果您切换到使用普通函数语法,您应该能够像通常一样使用$(this)
:
class foo {
public test(evt){
alert($(evt.target).data("id")); // "undefined"
console.log($(evt.target));
}
}
显然,您对调用的测试方法的实例有问题,但我认为值得分享。使用
事件。当尝试获取所单击内容的数据属性时,currentTarget对我很有效
$("div").on("click", "button", function(event) { this.test()});
你没有做错任何事——打字脚本有点太有用了。类内方法此
被视为总是引用相应的对象。因此,您有两种解决方案—要么使用event.target
属性捕获单击的元素,要么在该类之外定义处理函数。正如我所看到的,大多数答案都不完整或错误。请访问我的答案:我使用$(“div”)。在(“单击”,“按钮”,“事件)=>this.test(事件));在函数中:publictest(元素:JQueryEventObject){$(element.target)}。。。。它的工作-谢谢你@用户3351722:谢谢。这解决了访问事件目标和类的实际问题。我不得不使用这个答案,而不是建议的答案,因为我在尝试用自己的扩展方法扩展jQuery.fn时遇到了同样的问题,它不像事件那样提供对“This”的替代引用。这也为我工作!谢谢
class foo {
public test(evt){
alert($(evt.target).data("id")); // "undefined"
console.log($(evt.target));
}
}
$("div").on("click", "button", function(event) { this.test()});
$('.elementID').click(e => this.clickedElement(e));
clickedElement(e: JQueryEventObject) {
var iWasClickedData = $(this).data('key'); // will not work
var iwasClickedDataFixed = $(e.currentTarget).data('key'); // will work
}