2

我有一个循环通过一些输入控件的 jquery 函数

function updateInputStatus($el) { 
    // Declare an error array that will contain jquery selectors
    $el.each(function () {
        if (this.Validators) {
            var isValid = true;

            for (var i = 0; i < this.Validators.length; i++) {
                var val = this.Validators[i];  

                if (!val.isvalid) {
                    // Add this element to error array -> $(this).closest('.input-control')
                    isValid = false;
                    break;
                }
            }

            $(this)
                .closest('.input-wrapper')
                .toggleClass('input-ok', isValid)
                .toggleClass('input-error', !isValid);
        }
    })

    // Do something with error array outside of loop
}

一切都很好,但是我还需要找到每个 $el 的父级并检查是否有任何 $el 无效 - 如果 1 个或多个是我添加其他类,否则删除任何现有类。在我检查了整个循环之前,我不能这样做。

我已经评论了我需要添加代码的区域,但我正在努力让它正确。

有任何想法吗?

4

2 回答 2

0

所以我想你可以添加一个错误数组并将错误元素推入其中。然后在最后的每个循环中对它们进行处理。请记住,当您使用它们时,它们将是 jquery 对象。

所以是这样的:

function updateInputStatus($el) { 
    // Declare an error array that will contain jquery selectors
    var errors = [];
    $el.each(function () {
        if (this.Validators) {
            var isValid = true;

        for (var i = 0; i < this.Validators.length; i++) {
            var val = this.Validators[i];  

            if (!val.isvalid) {
                var close_thing = $(this).closest('.input-control');
                if(!close_thing.hasClass('used_for_error'))
                {
                    errors.push(close_thing);
                    close_thing.addClass('used_for_error');
                }

                isValid = false;
                break;
            }
        }

        $(this)
            .closest('.input-wrapper')
            .toggleClass('input-ok', isValid)
            .toggleClass('input-error', !isValid);
    }
})

// Do something with error array outside of loop
    $.each(errors, function(key, value){
        //*do stuff with elements in error array*
    });
}
于 2013-08-02T14:55:49.120 回答
0

要获得 $el 父母,您可以这样做:

var parent = $el.parent();

见这里http://api.jquery.com/parent/

于 2013-08-02T14:56:53.040 回答