填充JavaScript键值对

时间:2014-06-05 23:20:02

标签: javascript jquery dictionary key-value

我有一个带有文件名和复选框的表单,它来自已预先填充的服务器。我的表单应该更新复选框。

我在JavaScript中有代码,用于选择行并尝试使用每行复选框中的更新值构建键值对象。

当选择器设置为仅返回已检查的选择器时,字典会完美地构建,但我还想将可能已经勾选的条目添加到字典中。

当我使选择器选择所有行(包括未定义checked属性的位置)时,字典根本不会被填充。

这是我的输入元素:

<input type="checkbox" name="Map" data-id="@file.FileId" checked="checked" class="auto-accept-checkbox" />

以下是javascript代码段:

var map = {};

$("#shareable-file-settings-form table tr").each(function () {
    map[$(this).attr('data-id')] = $(this).attr('checked') === 'checked';
});

我逐项尝试了控制台,我的右手操作数表达式在那里工作!当选择器被修改时,我不知道为什么那种外观会像那样(在字典中没有放任何东西)行为不正常

从:

"#shareable-file-settings-form table tr :checked"

为:

"#shareable-file-settings-form table tr"

1 个答案:

答案 0 :(得分:3)

就像乔说的那样,你选择了tr元素,而不是内部的input[type=checkbox]。首先,将选择器更改为

"#shareable-file-settings-form table tr input[type=checkbox]"

此外,&#34;检查&#34;复选框上的属性是HTML属性,而不是属性。此外,您可以使用jQuery的.data()方法访问id数据属性。

您可以将其更改为

map[$(this).data('id')] = $(this).prop('checked');