我有一个 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/