Обращение к методу Javascript "Class" из функции jQuery - PullRequest
1 голос
/ 20 мая 2011

Как мне сослаться на родительский метод "класса" в Javascript из функции jQuery? Пример:

$Object.prototype.TestFunction = function(arg){
  alert(arg);
}

$Object.prototype.foo = function(){
    $(something).click(function(){
        this.TestFunction("Hello"); //Obviously doesn't work.
    });
}

У меня есть предсказуемые наборы данных, которыми нужно манипулировать для нескольких наборов и результатов, просматриваемых на странице, поэтому я создал объект для его обработки. Однако когда я использую что-то «jQuery» и пытаюсь ссылаться на свойство или метод объекта изнутри, это, очевидно, не работает.

Возможно ли это?

Большое спасибо за ваше время и усилия, заранее.

Ответы [ 2 ]

4 голосов
/ 20 мая 2011

Просто присвойте this переменной и в своей закрытой ссылке переменная.

$Object.prototype.foo = function(){
    var that = this; //<--here
    $(something).click(function(){
        that.TestFunction("Hello");
    });
};

Пример jsfiddle

3 голосов
/ 21 мая 2011

Мой предпочтительный метод - использовать $ .proxy:

$Object.prototype.foo = function(){
    $(something).click($.proxy(this.TestFunction,this);
};

Он чище и также передает любые аргументы (например, событие) в функцию-обработчик.

...