我在javascript类中有这个函数:
this.checkSections = function(){
jQuery('#droppable #section').each( function() {
nextId = jQuery(this).next().attr('id');
if (nextId != 'small' && nextId != 'large'){
jQuery(this).remove();
this.sections --;
this.followArticles = 0;
}else{
articles = 0;
obj = jQuery(this).next();
while (nextId == 'small' || nextId == 'large'){
articles++;
obj = obj.next()
nextId = obj.attr('id');
//alert(nextId);
}
this.followArticles = articles;
alert(this.sections);
}
});
}
alert(this.sections);
(最后一行)给出了undefined
的输出,尽管定义并使用了sections
。
可能是什么问题?
答案 0 :(得分:3)
this
始终是局部变量,因此在每个函数中都会被覆盖。
你可能会做的是指向你的班级,例如var myClass = this;
并使用myClass
代替this
。
this.checkSections = function(){
var myClass = this;
jQuery('#droppable #section').each( function() {
nextId = jQuery(this).next().attr('id');
if (nextId != 'small' && nextId != 'large'){
jQuery(this).remove();
myClass.sections --;
myClass.followArticles = 0;
}else{
articles = 0;
obj = jQuery(this).next();
while (nextId == 'small' || nextId == 'large'){
articles++;
obj = obj.next()
nextId = obj.attr('id');
//alert(nextId);
}
myClass.followArticles = articles;
alert(myClass .sections);
}
});
}