我没有进入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上调用此函数,该函数不存在。
有没有解决方案?
答案 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'(您为此对象指定的变量)。