OOP - 在每个内部访问公共“this”

时间:2014-11-24 03:13:20

标签: javascript jquery

我试图创建一个循环遍历某些表行的函数,但我需要使用this.isempty而不是isempty。如何在每个循环中访问它。

代码:

function checkValues(look) {
    this.isempty = 1;   
    this.search = $(look).find("input").each(function(){                        
        if ($.trim($(this).val())!="") {
            this.isempty = 0;
        }
    }); 
    return this.isempty;
}

显然this.isempty = 0;不起作用。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用闭包变量来引用isempty

function checkValues(look) {
    this.isempty = 1;
    var self = this;
    this.search = $(look).find("input").each(function () {
        if ($.trim($(this).val()) != "") {
            self.isempty = 0;
        }
    });
    return this.isempty;
}

但这里更合适的方法是使用.filter(),如

function checkValues(look) {
    this.isempty = 1;
    this.search = $(look).find("input").;
    this.isempty = this.search.filter(function () {
        return $.trim(this.value) != '';
    }).length > 0;
    return this.isempty;
}

答案 1 :(得分:0)

您是否因为代码中存在约束而需要引用this?以下是否有效?

function checkValues(look) {   
    var isEmpty = 1;
    $(look).find("input").each(function(){                        
        if ($.trim($(this).val())!="") {
            isEmpty = 0;
            return false; // Breaks out of the loop for a little performance boost
        }
    }); 
    return isEmpty;
}