Как назначить события при выявлении прототипа паттерна? - PullRequest
1 голос
/ 30 декабря 2011

Я пытаюсь реализовать выявление шаблона модуля.Мне нужно назначить обработчик события одному из элементов, этот обработчик событий является функцией, которую я определяю в прототипе, но я получаю this.trigger не является функцией error.

Вот что у меня естьсделано:

//constructor
var MyClass = function (settings) {
   this.someElement=$(settings.elementID);
}

//prototype    
MyClass.prototype = function() {
    var init = function() {
        this.someElement.change(this.handler);
    },
        handler = function() {
        this.someElement.hide();
    };

    return {
        init : init,
        handler : handler
    };
}();

Вот как я это называю:

var myClass = new MyClass();
myClass.init();

1 Ответ

1 голос
/ 31 декабря 2011

Я полагаю, ваш конструктор должен быть

var MyClass = function (settings) {
    this.someElement = jQuery("#" + settings.elementID);
}

Тогда вы сможете вызвать метод jQuerys trigger для этого элемента с (new MyClass({elementID:"someid"})).someElement.trigger(), потому что "trigger" - это метод экземпляра jQuery, которыйэто свойство someElement вашего объекта.

Кроме того, ваш обработчик не будет работать, потому что он вызывается в контексте элемента, а не вашего объекта.Так и должно быть

MyClass.prototype.init = function init() {
    this.someElement.change(this.handler || function defaulthandler() {
        $(this).hide();
    });
};
...