gpt4 book ai didi

typescript - 如何访问 jquery 事件中的类变量?

转载 作者:搜寻专家 更新时间:2023-10-30 21:18:29 24 4
gpt4 key购买 nike

如果我在 jQuery 事件中,我不确定如何访问类变量。下面的例子

// <reference path="../typings/jquery/jquery.d.ts" />

export class Notes {

// I want to access this inside of the click event
test = "test";

foo() {
//works here
alert(this.test);

$("#testDiv").click(function () {

// context of this changes so this no longer works
alert(this.test);

// How do I access the test variable in here?
})
}
}

最佳答案

如果您使用 lambda 表达式,它将 this 绑定(bind)到封闭范围的 this

export class Notes {
private test: string = "test";

foo() {
//works here
alert(this.test);

$("#testDiv").click(() => {
alert(this.test);
})
}
}

翻译成

var Notes = (function () {
function Notes() {
this.test = "test";
}
Notes.prototype.foo = function () {
var _this = this;
alert(this.test);
$("#testDiv").click(function () {
alert(_this.test);
});
};
return Notes;
})();
exports.Notes = Notes;

但是请注意,在 jQuery 回调中,您将无法按预期访问 DOMElement,因为 this 已被翻译。如果您希望能够同时执行这两项操作,请自己将 this 添加到闭包中的变量中:

export class Notes {
private test: string = "test";

foo() {
alert(this.test);
var self = this;
$("#testDiv").click(function() {
alert(self.test);
$(this).hide(); // still works
})
}
}

关于typescript - 如何访问 jquery 事件中的类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16446371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com