jQuery.fn.each来创建JSON对象

时间:2014-03-23 14:30:29

标签: jquery json each

以下使用jQuery.fn.each来构建将包含JSON对象的变量。问题是添加到数组会导致JavaScript错误。

var formfields = { step: $(this).data('step') }

$(this).parent().parent().parent().find('input').each(function(){
    formfield += $(this).attr('name'):$(this).val(); // This line is the problem
});

alert(form fields);

如何做到这一点。

3 个答案:

答案 0 :(得分:0)

您需要使用bracket notation

var formfields = {
    step: $(this).data('step')
}
$(this).parent().parent().parent().find('input').each(function () {
    formfield[$(this).attr('name')] = $(this).val(); // This line is the problem
});
alert(JSON.stringify(formfield)); //use console.log() instead of alert()
  • 使用.closest()而不是多次调用.parent()
  • 此外,您可以使用this.name来访问输入的名称,而不是使用$(this).attr('name')

答案 1 :(得分:0)

试试这个

var formfields = {step: $(this).data('step')};

$(this).parent().parent().parent().find('input').each(function () {
    formfields[$(this).prop('name')] = $(this).val();
});

console.log(formfields);

答案 2 :(得分:0)

以下是使用serializeArray()的替代方法:

var formfields = { step: $(this).data('step') };

var formfieldsarray = $(this).parent().parent().parent().find('input').serializeArray();

$.each(formfieldsarray, function() {
    formfields[this.name] = this.value;
});