Проблема в том, что this
- это ключевое слово, которое будет ссылаться на разные вещи в разное время. Хитрость заключается в том, чтобы создать новую переменную that
, присвоив ей this
в то время, когда this
равно , ссылаясь на то, что вы хотите. Тогда он будет доступен для вложенных функций через лексическую область видимости. Я обычно делаю это однажды прямо вверху моих функций конструктора.
var setEditor = function()
{
var that = this; // that is not a keyword and will always refer this as it is
// interpreted at the line of assignment (until that itself is
// redefined of course). this will mean something
// else when run in an event handler.
this.info = {
'id' : 1 // <--------------- i want this
};
var cardEditor = function()
{
var status = {
'touched' : false,
'id' : 0
};
card.children('input').bind('focusout', function() {
alert(that.info['id']); // now refers to the object and not the input
// element.
$.ajax({
type : 'POST',
url : '../addcard',
data : 'name=John&location=Boston',
dataType : 'json',
success: function(msg){
$('#rec').html(msg);
}
});
});
};
};
set = new setEditor();