对于下面的代码,我想使_formsOk函数对Javascript数组和“ JQuery对象”都起作用。在function1()中,我尝试使用所有DOM元素(包含具有id =“ objectTypesContainer”的父元素的DOM元素)创建一个Javascript数组。基本上,function1()在调用_formsOk()函数之前会过滤掉我不需要的DOM元素,该函数会进行实际的表单验证。
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对象”,所以标记为(//此行失败)的行现在失败。
原始代码如下所示:
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函数定义。
不必将所有元素都放在一个新数组中,只需.filter()
在jQuery对象中使用即可。
allForms.filter(function () {
return $(this).parent().attr("id") !== "objectTypesContainer")
});
这将删除选择中不需要的所有项目,现在allForms
仅包含所需的元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句