Я хотел бы новый объект, например, newForm = new MyForm(...);
Затем я хотел бы привязать событие нажатия к кнопке.
Как я могу перезвонить "newForm" из события click?
Пример кода (не удалось связать):
var MyForm = function(data, targetUrl, targetObj, preload, callback){
this.data = data;
this.preload = preload;
this.targetUrl = targetUrl;
this.targetObj = targetObj;
this.callback = callback;
this.this = this;
this.bind();
};
MyForm.prototype.submit = function(){
this.preload;
$.ajax({
type: "POST",
url: this.targetUrl,
data: this.data
}).done(function(responseData) {
if(typeof this.callback === 'function'){
return this.callback(responseData);
}
});
};
MyForm.prototype.bind = function(newTargetObj){
if(typeof newTargetObj === 'object'){
this.targetObj = newTargetObj;
}
this.targetObj.click(this.clickEvent());
}
MyForm.prototype.clickEvent = function(){
console.log(this);
console.log(this.targetForm);
// this.targetForm.submit();
alert('click!');
};
Я не могу проверить это на данный момент, но я считаю, что вы должны передать объект в событие, которое вы подключили для события click. Это показано ниже.
MyForm.prototype.bind = function(newTargetObj){
if(typeof newTargetObj === 'object'){
this.targetObj = newTargetObj;
}
this.targetObj.click(this.clickEvent(this.targetObj));
}
MyForm.prototype.clickEvent = function(sender){
console.log(this);
console.log(this.targetForm);
// this.targetForm.submit();
alert('click!');
};
clickEvent
this
контекст как в функцииclickEvent
и в обработчикеdone
. Кроме того, вы не должны вызыватьclickEven()
при подключении его в качестве обработчика.