Объектно-ориентированный jQuery: привязать кнопку для события щелчка и перезвонить новому объекту как нажатому

0

Я хотел бы новый объект, например, 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!');
};
Теги:
javascript-events
oop
click
jquery-events

1 ответ

0
Лучший ответ

Я не могу проверить это на данный момент, но я считаю, что вы должны передать объект в событие, которое вы подключили для события 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!');
};
  • 0
    Спасибо за ответ. Кажется, код не работает, как ожидалось. Он получил следующую ошибку: «Uncaught TypeError: undefined не является функцией»
  • 0
    На какой линии вы получаете эту ошибку?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню