我想知道我目前的解决方法是否有更简单的解决方案。
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
答案 0 :(得分:2)
请勿使用this
,而是使用参数:
var data= {
'key1':'value1'
};
$.each(data,function foo(idx,val) {
alert(val); //alerts 'value1'
$('#element').click(function() {
alert(val); //alerts 'value1'
});
});
答案 1 :(得分:1)
请使用Martin Jespersen的答案。然而...
按要求使用jQuery的.proxy()函数:
var data = {
"key1": "value1"
};
$.each(data, function(i, obj) {
alert(this); //alerts 'value1'
this.onClick = function() {
alert(this);
}
$('#element').click($.proxy(this, "onClick"));
});
请注意,您可能希望有一种方法可以更改选择器,以便在绑定点击事件的位置,我敢肯定。
答案 2 :(得分:-1)
使用jQuery.proxy。您可以使用以下代码:
var data= {
'key1':'value1'
};
$.each(data,function foo() {
alert(this); //alerts 'value1'
$('#element').click($.proxy(function() {
alert(this); }, this);
});