1

我今天在这里有一个与键值对数组有关的问题。

我的html如下

<input type="checkbox" class="data" id="task_checked" value="1" email="a@a.com">
<input type="checkbox" class="data" id="task_checked" value="2" email="b@b.com">

我想将以下数据存储为如下数组:

"1" => "a@a.com"
"2" => "b@b.com"

我的Javascript目前如下:

var newTasksArr = new Array();

$("#task_checked:checked").each(function() {
    var email = $(this).attr("email");
    var id = $(this).val();
    newTasksArr['id'] = email;

});

也许我使用的 Jquery .each() 错误,有人可以解释一下我的问题吗?

谢谢你的阅读。问候。

4

3 回答 3

3

两个问题:

在 Javascript 中,数组可能只有顺序的数字键。如果你想使用字符串作为键,你需要一个对象。

如果你想插入一个键等于 的值的元素id,那么你需要newTasksArr[id] = email;不带引号。

于 2013-02-20T16:48:06.933 回答
1

你几乎是对的,你只需要删除引号,'id'以便它使用 id 变量包含的值,而不是文字 string 'id'

您还应该使用对象 ( {}) 而不是数组 ( [])。

var newTasks = {};
$("#task_checked:checked").each(function() {
    var email = $(this).attr("email");
    var id = $(this).val();
    newTasks[id] = email;
});
于 2013-02-20T16:48:32.357 回答
0

避免在标记中重复 ID。以下应该会有所帮助,但是您可能希望将 jquery 选择器调整为包含上下文。

var arr = {};

$('input:checked').each(function() {
    var $t = $(this);

    var email = $t.attr("email");
    if (!email) {
        // you may wish to do something if email is missing
    }

    var id = $t.val();
    if (!id) {
        // deal with the error
    }

    arr[id] = email;
});
于 2013-02-20T16:53:02.817 回答