将元素添加到jQuery数组

时间:2013-08-02 14:41:07

标签: jquery

我有一个循环浏览某些输入控件的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或者更多是我添加其他类别,则删除任何现有的类。在我检查整个循环之前,我不能这样做。

我评论了我需要添加代码的区域,但我正在努力做到正确。

有什么想法吗?

2 个答案:

答案 0 :(得分: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*
    });
}

答案 1 :(得分:0)

获得$ el parent,你可以这样做:

var parent = $el.parent();

http://api.jquery.com/parent/