我有问题。这是我第一次尝试在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;
}
答案 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();
});
}