gpt4 book ai didi

javascript - 在 jquery 每个循环中调用对象方法 - 范围问题?

转载 作者:行者123 更新时间:2023-11-30 08:55:50 26 4
gpt4 key购买 nike

My.Awesome.Obj = function() {
return {
// PUBLIC PROPERTIES
legendObj: null,

// PUBLIC METHODS
init: function() {
this.assignLegendClick();
},

assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = this.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
this.handleLegendClick();
});
})
},

handleLegendClick: function() {
console.log('*** handleLegendClick()');
},

EOF: null
};
}();

所以我得到一个错误提示

handleLegendClick is not defined

我假设这是一个范围问题,但我不确定如何在循环中引用回父对象...

最佳答案

问题是 this 是调用 click 事件处理程序时的 window

你可以这样做:

My.Awesome.Obj = function() {
var obj = {
// PUBLIC PROPERTIES
legendObj: null,

// PUBLIC METHODS
init: function() {
obj.assignLegendClick();
},

assignLegendClick: function() {
console.log('*** drawLegend()');
var checkboxes = obj.legendObj.find("input");
checkboxes.each(function() {
$(this).click(function() {
obj.handleLegendClick(); // <=== replace this with obj
});
})
},

handleLegendClick: function() {
console.log('*** handleLegendClick()');
},

EOF: null
};
return obj;
}();

关于javascript - 在 jquery 每个循环中调用对象方法 - 范围问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com