jquery - 将元素添加到 jQuery 数组

标签 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 个或多个,我将添加其他类,否则删除任何现有类。在检查整个循环之前我无法执行此操作。

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

有什么想法吗?

最佳答案

所以我想你可以添加一个错误数组并将错误元素插入其中。然后在最后的每个循环中对它们进行处理。请记住,当您使用它们时,它们将是 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*
    });
}

关于jquery - 将元素添加到 jQuery 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019709/

相关文章:

javascript - 菜单总是在顶部和水平滚动

javascript - jQuery 搜索表行(隐藏和可见)

javascript - jquery查找并替换iframe src

javascript - opencart 在类别页面添加到购物车而不将商品添加到购物车

javascript - 如何选择嵌套列表中的所有父 <li>

javascript - jquery 有没有办法避免扩展单元格扩展它所持有的父单元格

javascript - 使用 val() 获取空值

javascript - 根据一天中的时间实时更新 html 元素内的内容

javascript - 如何 Hook jQuery 小部件的功能?

jquery - 如何直接在浏览器中使用VueJS插件?