1

我不喜欢 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 上调用此函数。

有什么解决办法吗?

4

2 回答 2

3

您可以使用对this变量的引用来解决问题:

makeQuestionFieldsEditable: function($questionNode)
{
    var that = this;
    $questionNode.find(".questionTitle").first(function(){that.changeTextOnClick($(this));});
    $questionNode.find(".questionChoice").each(function(){that.changeTextOnClick($(this));});
},
于 2012-11-27T22:39:58.827 回答
1

我认为您需要做的就是将“this”更改为“test”(您已将此对象分配给的变量)。

于 2012-11-27T22:39:11.730 回答