我有一个循环浏览某些输入控件的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或者更多是我添加其他类别,则删除任何现有的类。在我检查整个循环之前,我不能这样做。
我评论了我需要添加代码的区域,但我正在努力做到正确。
有什么想法吗?
答案 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)