我想知道是否有一个更简单的解决方案,我目前的解决方法。从父函数访问重写的变量
JavaScript示例:
var data= {
'key1':'value1'
};
$.each(data,function foo() {
alert(this); //alerts 'value1'
$('#element').click(function()) {
alert(this); //alerts something else
}
});
解决的方式,这将是:
var data= {
'key1':'value1'
};
$.each(data,function foo() {
alert(this); //alerts 'value1'
var this_original=this;
$('#element').click(function()) {
alert(this_original); //alerts 'value1'
}
});
这解决了问题,但它是不是很干净。我想知道是否有一个很好的Javascript/jQuery方法来获取子函数内部的原始值。喜欢的东西:parentFunction.this
恐怕你只是习惯于'var that = this;'在你的代码中。更详细的解释必然会遵循,但它与“this”是代码当前正在执行的对象的引用有关。一旦你进入点击功能,你已经转移到不同的上下文,并且“this”随之而来。 – lsuarez 2011-03-08 07:59:46
jQuery的“代理”函数会以任何方式提供帮助吗? – Kranu 2011-03-08 08:00:27
是的,但我不会推荐它,除非你真的需要这一层复杂性。其含义是你必须将事件处理程序作为你想要检索的上下文对象的成员,即在'data'下声明一个名为'onClick()'的成员函数。 – lsuarez 2011-03-08 08:04:24