Javascript:从对象函数内的单击函数调用对象函数

时间:2016-11-23 15:00:34

标签: javascript jquery html

我有问题。这是我第一次尝试在Javascript中使用对象,而且遇到了问题。

我有一个包含DOM-Element的对象,我想向该元素的子元素添加一个click-function。在click-function里面,我想调用另一个对象函数,但这不起作用。要调用另一个对象函数,我必须使用this.functionname()但是因为我在click-function this里面不再是我的对象,而是我添加了click-function的child-Element。所以我的问题是:如何从点击函数内部调用我的对象函数。

这是我的代码(代码中间的if条件并不重要):

function ManagementCard(card) {
    this.card = card;
    this.row = null;
    this.rowAlt = null;
    this.managementCard = this;
}

ManagementCard.prototype.initializeCard = function () {

    this.card.find(".card ul li div:first-child").click(function () {
        row = $(this).parent();

        if(this.rowAlt != null && this.rowAlt[0] != $(this).parent()[0])
        {
            this.rowAlt.children("div:last-child").collapse('hide');
            $(this.rowAlt).css('background-color', '');
            $(this.rowAlt).css('color', '');
            this.rowAlt = null;
        }
        this.toggleManagementRow();  <=== Important! Call object-function from inside of a click-function which is inside the object-function
    });
}

ManagementCard.prototype.getCard = function () {
    return this.card;
}

1 个答案:

答案 0 :(得分:2)

在另一个变量中保留对象的引用,例如self。在JavaScript中这是常见的事情

ManagementCard.prototype.initializeCard = function () {
    var self = this;
    this.card.find(".card ul li div:first-child").click(function () {
        row = $(this).parent();

        if(this.rowAlt != null && this.rowAlt[0] != $(this).parent()[0])
        {
            this.rowAlt.children("div:last-child").collapse('hide');
            $(this.rowAlt).css('background-color', '');
            $(this.rowAlt).css('color', '');
            this.rowAlt = null;
        }
        self.toggleManagementRow();
    });
}