Jquery获取非数字索引的输入数组的索引

时间:2011-06-09 14:35:18

标签: jquery arrays input

我使用jQuery的非数字索引输入:

<input name="attributes['index1']" class="text_inputs" />
<input name="attributes['index2']" class="text_inputs" />
<input name="attributes['index3']" class="text_inputs" />

和这个jquery代码:

var attrs = new Array();
$.map( $('input.text_inputs'), function(obj, idx) {
    attrs['here_the_index_from_input'] = obj.value;
});

所以我想将每个索引从输入添加到attrs数组索引。 提前谢谢!

3 个答案:

答案 0 :(得分:3)

你混淆了一堆不同的概念。

  • 您特意说“非数字索引”,这意味着您根本不应该使用数组。
  • 如果您不打算使用map返回的数组,请改用each
  • 如果您已经拥有jQuery集合,则无需使用$.func表单。只需使用.func

    var attrs = {};
    $('input.text_inputs').each(function()
    {
        var $this = $(this),
            name = $this.prop('name'),
            val = $this.val();
    
        name = name.replace(/^attributes\['|'\]$/g, '');
    
        attrs[name] = val;
    });
    

我认为'here_the_index_from_input''index1',例如,'index2''index3'和{{1}}。

演示:http://jsfiddle.net/mattball/t2hX5/

答案 1 :(得分:0)

  var attrs = [];
  $.each($('input.text_inputs'), function(){
      attrs[$(this).attr('nameOfIndexAttribute')] = $(this).val();
  });

答案 2 :(得分:0)

你可以这样做(如果我正确理解了你想要的东西)

var attrs = {};
$.map( $('input.text_inputs'), function(obj, idx) {
    attrs[obj.name] = obj.value;
});

attrs是一个关联数组,输入字段的名称为键,输入字段的值为值。

编辑 - 使用注释中正确陈述的对象,而不是数组