javascript - jQuery $ (':input' ).serializeArray();使用 native API 的功能

标签 javascript jquery

我如何只使用 JavaScript 编写这个 jQuery 函数(或者更确切地说,产生相同的结果)?

$(':input').serializeArray();

Function docs .

最佳答案

jQuery's implementation :

function serializeArray() {
    return this.map(function () {
        // Can add propHook for "elements" to filter or add form elements
        var elements = jQuery.prop(this, "elements");
        return elements ? jQuery.makeArray(elements) : this;
    }).filter(function () {
        var type = this.type;
        // Use .is(":disabled") so that fieldset[disabled] works
        return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !manipulation_rcheckableType.test(type));
    }).map(function (i, elem) {
        var val = jQuery(this).val();

        return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {
            return {
                name: elem.name,
                value: val.replace(rCRLF, "\r\n")
            };
        }) : {
            name: elem.name,
            value: val.replace(rCRLF, "\r\n")
        };
    }).get();
}

当然,这假定 this 是一个 jQuery 对象,具有 .filter().map() 等方法。这些方法也可用于 ECMAScript 5 中的数组,因此如果您不需要支持 IE < 9,此代码可能适用于 this 是 HTMLElements 数组的情况——在删除或重写极端情况之后jQuery 处理。如果您需要支持旧浏览器,那么您可能应该只使用 jQuery。

关于javascript - jQuery $ (':input' ).serializeArray();使用 native API 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368876/

相关文章:

php - onclick ="$.post(this.href); return false;"无法正常工作

javascript - 计算字符串第一个字符前的空格

javascript - 使用工厂和 Controller 返回数据

javascript数组仅循环第一个var

javascript - 从同一域的父窗口访问 iframe 中的 JavaScript 变量

jquery - 使用带有 jquery 函数的数组并循环遍历它

javascript - jQuery 删除行范围

javascript - 类 sap.ui.core.mvc.View 的渲染器未定义或未定义渲染函数!将跳过渲染! -

javascript - jquery 动画不透明度突然显示而不是平滑

javascript - Jquery 保留点击的链接并在刷新后添加/删除 css 类