0

我在 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);
            }
        });
    }

the alert(this.sections);(最后几行)给出了undefined虽然 thesections被定义和使用的输出。

可能是什么问题呢?

4

1 回答 1

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);
        }
    });
}
于 2013-01-28T12:56:04.533 回答