[英]How to iterate through an array of objects and replace one object while in the loop of chckebox : checked each function - jquery
在jquery中单击一个按钮,我循环遍历所有已选中/选中其复选框的行,同时,我必须创建一个选定或修改对象的数组。
不能将数组重置为,如果一个Company
第一次出现而第二次没有出现,因为未检查该行,我必须保留以前的值
看看这个小提琴
https://jsfiddle.net/shaswatatripathy/y7jqb5hp/1/
因此,假设您首先选择了两行,然后在文本框中添加了一些文本,则对象数组将具有两个具有该属性的对象,但是第二次他从那两行中选择了一行,然后取消选择另一行并给出了其他值文本框,我们必须使用具有该值的公司名称更新对象
的HTML
<table>
<tr>
<th>checkbox</th>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Alfreds </td>
<td>Maria </td>
<td>Germany</td>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Centro </td>
<td>Francisco </td>
<td>Mexico</td>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Ernst </td>
<td>Roland </td>
<td>Austria</td>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Island </td>
<td>Helen </td>
<td>UK</td>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Laughing </td>
<td>Yoshi </td>
<td>Canada</td>
</tr>
<tr>
<td><input name="eachRow" type="checkbox"/> </td>
<td>Magazzini </td>
<td>Giovanni </td>
<td>Italy</td>
</tr>
</table>
<input type="button" onclick="getdetails()" value="click me"/><br>
<input type="text" id="txtBox" name="name"><br>
jQuery的
var selectedRows=[];
function getdetails() {
var modifier = $('#txtBox').val();
$.each($("input[name='eachRow']:checked").parents("tr"), function () {
selectedRows.push ({
company : $(this).find('td:eq(1)').text(),
contact: modifier
})
console.log(selectedRows);
});
}
的CSS
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
下面的代码可以解决问题。
var selectedRowsArray= [];
$.each($("input[name='eachCheckbox']:checked").parents("tr"), function () {
ID= $(this).find('td:eq(1)').text();
var found = selectedRowsArray.filter(function (el) {
return el.ID === ID;
});
if (found.length === 0) {
selectedRowsArray.push({
ID: ID,
Col2value : $(this).find('td:eq(2)').text(),
Col3value : //somevalue manupulated,
Col4value : //somevalue manupulated
});
} else {
// Do the updating here with the object `found`
}
});
您可以使用filter函数来获取ID为selectedRowsArray的数组中的对象
尝试这个
var objs = selectedRowsArray.filter(function(row){return row.ID == ID;});
返回的objs
是在您的数组中ID为ID的对象数组。
现在,您可以通过迭代objs
和upadate对象的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.