jQuery构造多维关联数组

jQuery construct multidimensional associative array

我希望有人可以帮助我使用 jQuery 从 HTML 构建以下数组。我试过下面的 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'
            ]

        ]

这假设您的 html 结构始终是 div,带有 class 标签,后跟输入。

通过对您的 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/