从数组中获取正确元素的正确方法
right way to get the correct element from array
我有以下两个数组:
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
---------------------
每一行的checkbox元素都有一个类"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"。
我的问题是,谁能给我一个提示,什么是正确的?
问题是您的数组和创建的表之间没有连接。
我建议为表行设置一个自定义属性(tr)(自定义数据属性),并在单击时读取。
你的表行html应该看起来像:
<tr data-array-index="5">[...]</tr>
现在您可以通过:
检索该行的数组索引:$(".table_row_checkboxes").click(function(){
var arrayIndex = $(this).closest("tr").attr("data-array-index");
[...]
我没有测试它。但我认为这种方法是正确的。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 从数组中删除元素的最佳方法是:javascript/jquery
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 任何一种简单的方法都可以将带有onload的元素作为目标
- 如何向Selectize元素添加渲染和创建方法
- 他们是如何使用angular/jqLite find()方法按属性名称和值选择元素的?ng conf 2015
- 在 JavaScript 数组中的所有元素之间穿插元素的简洁方法
- 列出没有 mysql 的元素的最佳方法是什么
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 元素.appendChild()插入IE.变通方法?(与innerText与textContent相关)
- 选择具有值数组的所有元素的最有效方法
- 有什么方法可以在下一个元素上进行追加吗
- 使用javascript查找元素位置的最快方法
- 特定循环(html元素)方法的优点和缺点
- Javascript集:任何覆盖元素之间比较的方法
- 使用Ajax Get方法将数据显示到特定元素中
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- javascript在html元素方法运行setTimeout后返回此消息
- 隐藏具有特定类$.each、for等的元素的有效方法