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 に答える