我正在实例化一个创建 DOM 元素并将jQuery 对象存储为它的属性之一的对象,例如:
this.element = $("<div></div>");
我注意到在建立事件时,jQuery 对this
上下文的重写可能会导致问题,例如,如果您尝试应用以下内容:
this.element.click(function() {
this.someObjectMethod();
});
内部this
现在适用于 DOM 元素而不是原始对象。为了克服这个问题,我可以执行以下操作:
var _this = this;
this.element.click(function() {
_this.someObjectMethod();
});
我想知道,这是不好的做法,有没有更好的方法?我查看了一些jQuery 文档apply
,call
但我不确定它们在这种情况下是否会有所帮助。
此外,我正在使用Resig 的“简单继承”类,这可能会对您的答案产生影响。
看到答案后更新$.proxy
,这些似乎是合理的解决方案,但是您将失去引用 DOM 元素的能力。