【问题标题】:Jquery get index of an array of inputs of non-numeric indexesJquery获取非数字索引输入数组的索引
【发布时间】:2011-06-09 14:35:18
【问题描述】:

我使用 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 数组索引。 提前致谢!

【问题讨论】:

  • 'here_the_index_from_input' 是否意味着,例如,'index1''index2''index3'

标签: jquery arrays input


【解决方案1】:

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

  • 您特别提到了“非数字索引”,这意味着您根本不应该使用数组。
  • 如果您不打算使用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'

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

【讨论】:

    【解决方案2】:
      var attrs = [];
      $.each($('input.text_inputs'), function(){
          attrs[$(this).attr('nameOfIndexAttribute')] = $(this).val();
      });
    

    【讨论】:

      【解决方案3】:

      你可以这样做(如果我理解正确的话)

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

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

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

      【讨论】:

      • var attrs = {};var attrs = new Object(); 不是 var attrs = new Array();。数组仅用于数字索引。仅仅因为您可以添加临时属性并不意味着您应该这样做。
      • 你是对的。我将编辑答案并记住这一点!我想展示的是如何使用 obj.name 来获取输入的名称。
      猜你喜欢
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多