Объекты Javascript и jQuery - PullRequest
       1

Объекты Javascript и jQuery

0 голосов
/ 07 августа 2010

Я не уверен, что лучший способ подойти к этому.

У меня есть элемент управления, который я хочу открывать и сохранять некоторые данные или изменять их на лету.

function TaskControl(params) {
    this.params = params;

    this.openTaskControl = function () {
        alert("openTaskControl");
    }

    $("#button").click(function () {
        this.openTaskControl();
    });
}

Проблема, с которой я столкнулся, заключается в том, что при попытке вызвать openTaskControl выдается ошибка, поскольку this, по-видимому, ссылается на элемент HTML, а не на TaskControl. Как мне вызвать эту функцию изнутри функции щелчка?

Ответы [ 3 ]

4 голосов
/ 07 августа 2010
function TaskControl(params) {
        this.params = params;
        var that = this;

        this.openTaskControl = function () {
                alert("openTaskControl");
        }

        $("#button").click(function () {
                that.openTaskControl();
        });
}
3 голосов
/ 07 августа 2010

Внутренняя область действия будет ссылаться на другой объект this. Вместо этого используйте переменные:

function TaskControl(params) {
    var paramsSave = params;

    var openTaskControl = function () {
        alert("openTaskControl");
    }

    $("#button").click(function () {
        openTaskControl();
    });
}
2 голосов
/ 07 августа 2010

Вот хорошее обсуждение того, как использовать ключевое слово this в javascript: http://www.quirksmode.org/js/this.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...