将Javascript数组转换回JQuery类型的对象

对于下面的代码,我想使_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函数定义。

VLAZ

不必将所有元素都放在一个新数组中,只需.filter()在jQuery对象中使用即可。

allForms.filter(function () {
   return $(this).parent().attr("id") !== "objectTypesContainer")
});

这将删除选择中不需要的所有项目,现在allForms仅包含所需的元素。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章