我有以下两个数组:
var nodes = new Array();
var arr = [{
name:"abc1",
type:"blue"
}, {
name:"abc2",
type:"red"
}, {
name:"abc3",
type:"red"
}, {
name:"abc4",
type:"green"
}, {
name:"abc5",
type:"red"
}, {
name:"abc6",
type:"blue"
}];
阅读“ arr ”中的信息我有一个 2 行的表格,其中没有关于类型不是“蓝色的元素的信息“给出了:
---------------------
| | name | type | } - thead
---------------------
| [] | abc1 | blue | } - 1st row
---------------------
| [] | abc6 | blue | } - 2nd row
---------------------
每行的复选框元素都有一个“ table_row_checkboxes ”类
单击行中的复选框,我找到整行的索引。 我测试是否选中了复选框。 如果是,请填写名为“ nodes ”的新数组。 如果不是,则清空阵列。
$(".table_row_checkboxes").click(function(){
var idx = $(this).closest("tr").index(); // row index of the table
if ($(this).is(":checked")) {
nodes.push(arr[idx].name);
} else if($(this).not(":checked")) {
nodes = $.grep(nodes, function(val_name) {
return val_name != arr[idx].name;
});
}
}
现在我的问题是,当我点击名称为“ abc6 ”的表格元素时,我得到元素的索引号“ 1 ”,这对应到“ arr ”中的元素“ abc2 ”,我的新数组“节点”填充了名称“ abc2 “而不是” abc6 “。
我的问题是,有人可以给我一个提示,这是正确的吗?
答案 0 :(得分:1)
问题是您的阵列与创建的表之间没有连接。
我建议将自定义属性设置为表格行(tr)(Custom Data Attributes)并在点击时阅读。
您的表格行html应如下所示:
<tr data-array-index="5">[...]</tr>
现在您可以通过以下方式检索行的数组索引:
$(".table_row_checkboxes").click(function(){
var arrayIndex = $(this).closest("tr").attr("data-array-index");
[...]
我没有测试它。但我认为这种做法是正确的。