如何使用.each运行输入然后合并结果?

时间:2010-09-07 19:18:54

标签: jquery

以下代码段遍历一堆表单元素,获取名称和值并提醒它们。如果有3个输入,我会收到三个警报。我需要将这些全部结合起来,以便我可以通过.post提交它们,但不知道该怎么做。

我不能使用.serializeArray,因为我没有可以使用的表单标签。后端是.net,页面上最多可以有20种不同的表单,所以我无法提交整个内容。

有人能指出我正确的方向吗?

$('.savefunctions a').live('click', function() { 
    var fields = $(this).parents('.ui-accordion-content').find(':input');
            $.each(fields, function(i, field) {
        alert(field.name+': "'+field.value+'", ');
    });
});

3 个答案:

答案 0 :(得分:3)

您不需要<form>来使用.serializeArray()

From the docs:

  

此方法可以作用于已选择单个表单元素的jQuery对象,例如<input><textarea><select>

var result = $(this).parents('.ui-accordion-content')
                                          .find(':input').serializeArray();

答案 1 :(得分:0)

使用对象:

$('.savefunctions a').live('click', function() { 
    var o = {};
    var fields = $(this).parents('.ui-accordion-content').find(':input');
    $.each(fields, function(i, field) {
        o[field.name] = field.value;
    });
   $.post('http://my.url/', o);
});

答案 2 :(得分:0)

试试这个:

$(fields).each( <do your processing here for each field> );

注意:在.each()内部,要遍历每个字段,请使用关键字this。但是如果你需要应用jQuery函数,那么就这样做:

$(this).click();