2015-01-09 3 views
0

Я надеюсь, кто-то может помочь мне построить ниже массив из HTML с помощью jQuery. Я попытался с ниже JQuery, но это не правильно выводит массив:jQuery построить многомерный ассоциативный массив

Я положил все в jsfiddle

Заранее спасибо за любую помощь

var options = []; 
var a = 0; 
$(".option").each(function(i) { 
    options[a] = []; 
    options[a]["label"] = $('.label', this).text(); 
    options[a]["value"] = $('input', this).val(); 
    a++; 
}); 

Это пример мой HTML:

<div class="option"> 
<div class="label">Title</div> 
<input type="text" value="TitleValue"> 
<div class="label">SKU</div> 
<input type="text" value="SKUValue"> 
<div class="label">Currency</div> 
<input type="text" value="CurrencyValue"> 
</div> 

<div class="option"> 
<div class="label">Title</div> 
<input type="text" value="TitleValue"> 
<div class="label">SKU</div> 
<input type="text" value="SKUValue"> 
<div class="label">Currency</div> 
<input type="text" value="CurrencyValue"> 
</div> 

<div class="option"> 
<div class="label">Title</div> 
<input type="text" value="TitleValue"> 
<div class="label">SKU</div> 
<input type="text" value="SKUValue"> 
<div class="label">Currency</div> 
<input type="text" value="CurrencyValue"> 
</div> 

структура массива должна выглядеть следующим образом:

array = [ 

    "0" => [ 
       'Title' => 'TitleValue', 
       'SKU' => 'SKUValue', 
       'Currency' => 'CurrencyValue' 
      ], 

    "1" => [ 
       'Title' => 'TitleValue', 
       'SKU' => 'SKUValue', 
       'Currency' => 'CurrencyValue' 
      ] 

     ] 
+2

Сделать опции [а] и объект как опции [а] = {}; В массивах JS только числовые ключи и объекты - это то, что вы называете массивом или хешем. – prodigitalson

ответ

0

Это предполагает, что ваша структура html всегда является div с классом метки с последующим вводом.

С некоторыми изменениями в вашем html, вы можете сделать это менее хрупким. Возможно, привязка метки и ввода вместе с атрибутом данных.

var options = []; 
var a = 0; 
$(".option").each(function (i) { 
    options[a] = {}; 
    $(this).find('.label').each(function() { 
     var title = $(this).text(); 
     var value = $(this).next('input').val(); 
     options[a][title] = value; 
    }); 
    a++; 
}); 

console.log(options); 

http://jsfiddle.net/hrnzsegf/2/