是否有jQuery序列化的反函数?

我可以写一些东西,我在问是否已经在jQuery中构建了一些内容。

不,那里没有。

您如何知道要更改哪个DOM元素? 可能有不同forms的相同名称的相同元素等。

也许parseJSON会帮助你:

jQuery.parseJSON(json)返回:Object
描述:采用格式良好的JSON字符串并返回生成的JavaScript对象。

简答: , jQuery中没有内置的东西可以做到这一点。 不知道为什么不……

但是这里有一个jQuery 插件 ,如果你使用.serialize()来获取一个序列化的字符串应该可以做到这.serialize()

 $.fn.deserialize = function (serializedString) { var $form = $(this); $form[0].reset(); // (A) optional serializedString = serializedString.replace(/\+/g, '%20'); // (B) var formFieldArray = serializedString.split("&"); // Loop over all name-value pairs $.each(formFieldArray, function(i, pair){ var nameValue = pair.split("="); var name = decodeURIComponent(nameValue[0]); // (C) var value = decodeURIComponent(nameValue[1]); // Find one or more fields var $field = $form.find('[name=' + name + ']'); // Checkboxes and Radio types need to be handled differently if ($field[0].type == "radio" || $field[0].type == "checkbox") { var $fieldWithValue = $field.filter('[value="' + value + '"]'); var isFound = ($fieldWithValue.length > 0); // Special case if the value is not defined; value will be "on" if (!isFound && value == "on") { $field.first().prop("checked", true); } else { $fieldWithValue.prop("checked", isFound); } } else { // input, textarea $field.val(value); } }); return this; } 

(A)顶部的复位是可选的。 您可能希望首先重置字段值,或者可能希望使用以下内容清除它们: https : //stackoverflow.com/a/6786237/1766230

(B)请参阅https://stackoverflow.com/a/24417399/1766230了解我们为什么需要更换+

(C)有关decodeURIComponent信息,请参阅Mozilla Developer Javascript Reference 。

(注意:如果您使用.serializeArray()或其他方式来序列化您的数据,上面的代码将不起作用;您可能会发现其中一些解决方案很有用: jQuery插件可以序列化表单并还可以恢复/填充表单? )

无聊的用法示例:

 var $form = $('form.myFormClass'); var s = $form.serialize(); $form.deserialize(s); 

这是一个让你玩弄设置值,清除,重置和“反序列化”的jsfiddle: http : //jsfiddle.net/luken/4VVs3/