В приведенном ниже коде я хотел, чтобы функция _formsOk работала как для массивов Javascript, так и для "объектов JQuery". В function1 () я попытался создать массив Javascript со всеми элементами DOM, кроме тех, которые имеют родительский элемент с id = "objectTypesContainer". По сути, function1 () отфильтровывает элементы DOM, которые мне не нужны, прежде чем вызывать функцию _formsOk (), которая выполняет фактическую проверку формы.
function1() {
var allForms = $('form:not(.vv_hidden)', this.selectMarketsContainer);
var nonObjectTypeForms = [];
allForms.each(function () {
if ($(this).parent().attr("id") !== "objectTypesContainer"){
nonObjectTypeForms.push($(this)[0]);
}
});
return this._formsOk(nonObjectTypeForms);
},
_formsOk: function($forms) {
var formOk = true;
console.log(typeof $forms)
$forms.each(function () { // This line fails
var validator = $(this).validate(DEFAULT_VALIDATION_OPTIONS);
if (!(validator && validator.form())) {
formOk = false;
}
});
return formOk;
},
Однако я понял, что теперь nonObjectTypeForms является массивом JSвместо «JQuery Object» строка, помеченная (// эта строка не работает), теперь не работает.
Исходный код выглядел следующим образом:
function1() {
var allForms = $('form:not(.vv_hidden)', this.selectMarketsContainer); // This is a "JQuery object", so no error occurs
return this._formsOk(allForms);
},
_formsOk: function($forms) {
var formOk = true;
console.log(typeof $forms)
$forms.each(function () { // This line fails
var validator = $(this).validate(DEFAULT_VALIDATION_OPTIONS);
if (!(validator && validator.form())) {
formOk = false;
}
});
return formOk;
},
Есть ли способ, которым я могу преобразоватьмассив JS в объект JQuery? Я пока не хочу менять определение функции _formsOk.