循环遍历多维元素数组?

时间:2014-04-07 13:23:54

标签: jquery

我有一堆像这样的输入字段:

<input type="text" class="amount" data-type="amount[aquisition][000014]" value="16.20">
<input type="text" class="amount" data-type="amount[aquisition][000014]" value="11.60">

<input type="text" class="amount" data-type="amount[aquisition][000345]" value="9.10">
<input type="text" class="amount" data-type="amount[aquisition][000345]" value="5.40">

我想将[aquisition]元素的值和以下未知的数字相加,但在同一文档中有多个。

尝试与each();一起工作但是当它超过一个括号时它不会工作。我还能够修改HTML输入字段的生成方式。

$('[data-type="amount[aquisition]"]').each(function(){
        console.log($(this));
    });

我希望上面的内容遍历所有元素[amount]并为每个唯一的第二组括号返回数组。但没有任何反应,甚至没有错误。

有什么想法吗?

THX!

1 个答案:

答案 0 :(得分:1)

您应该使用部分属性选择器:

// match data-type values beginning with "amount[aquisition]"
$('[data-type^="amount[aquisition]"]').each(function(){ ... });


// match data-type values containing "amount[aquisition]"
$('[data-type*="amount[aquisition]"]').each(function(){ ... });

http://jsfiddle.net/isherwood/76tvB/1

然后,您使用一些字符串解析来从第二组括号中获取值。

http://jsfiddle.net/isherwood/76tvB/4

var myNums = [];

// match data-type values beginning with "amount[aquisition]"
$('[data-type^="amount[aquisition]"]').each(function () {
    $(this).css('color', 'red');
    var myNum = $(this).attr('data-type');
    myNum = myNum.replace('amount[aquisition][', '').replace(']', '');
    myNums.push(myNum);

    $('#dropbox').text( myNums );
});

您必须对阵列进行检查以过滤重复项。