jQuery + Javascript - 访问匿名函数中的对象字段

时间:2012-11-27 22:30:24

标签: javascript jquery this

我没有进入JavaScript OOP,所以我创建了一个包含一些要调用的函数的字段的对象。

var test = {
    questions: [],

    addQuestion: function(questionTitle, possibleAnwsers)
    {
        // not really important
    },

    appendQuestionToHTML: function(question)
    {
        // not really important
    },

    makeQuestionFieldsEditable: function($questionNode)
    {
        $questionNode.find(".questionTitle").first(function(){this.changeTextOnClick($(this));});
        $questionNode.find(".questionChoice").each(function(){this.changeTextOnClick($(this));});
    },

    changeTextOnClick: function($spanElement)
    {
        // not really important
    }
};

makeQuestionFieldsEditable()函数中的以下对象查找“.questionTitle” - 类节点,并且所有“.questionChoice”类节点都为它们调用另一个函数。 问题是在匿名函数中使用它引用自身,而不是在字段changeTextOnClick上保存的函数。 Javascript / JQuery想要在HTMLDivElement上调用此函数,该函数不存在。

有没有解决方案?

2 个答案:

答案 0 :(得分:3)

您可以使用对this变量的引用来实现这一目的:

makeQuestionFieldsEditable: function($questionNode)
{
    var that = this;
    $questionNode.find(".questionTitle").first(function(){that.changeTextOnClick($(this));});
    $questionNode.find(".questionChoice").each(function(){that.changeTextOnClick($(this));});
},

答案 1 :(得分:1)

我认为您需要做的就是将'this'更改为'test'(您为此对象指定的变量)。