我有一个包含少量行和删除按钮的表。我已将所有表的列表存储在数组'arr'中。如何在按钮单击时从该阵列中删除所选项目。
watch: {
'email': function (val) {
validateInput('email', val,function(response){this.validEmail=response})
}
}
//...
validateInput('email', val, cb)
//...
success(response) {
cb(response);
}
答案 0 :(得分:1)
您的数组需要是一个对象数组,而不是一个数组数组。您还可以将一个类赋予表的name列以访问其值,然后使用findIndex
在数组中查找name属性的索引,然后使用splice
将其删除。
$(function(){
var arr= [
{"name": "John"},
{"name": "Henry"}
];
$('.dm').click(function(){
var val = $(this).closest('tr').find(".name").text();
console.log(val);
var index = arr.findIndex(function(item) {return item.name == val})
console.log(index)
arr.splice(index, 1)
console.log(arr);
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="sum_table">
<tr class="titlerow">
<th>S.N.</th>
<th>Name</th>
<th>Action</th>
</tr>
<tr>
<td>1</td>
<td class="name">John</td>
<td><button class="dm" data-id="0">Remove</button></td>
</tr>
<tr>
<td>2</td>
<td class="name">Henry</td>
<td><button class="dm" data-id="1">Remove</button></td>
</tr>
</table>
答案 1 :(得分:0)
假设您在点击事件中发送了此人的姓名,那么您可以使用array.splice
方法,如下所示:
for(var i = arr.length - 1; i >= 0; i--) {
if(arr[i] === name) {
arr.splice(i, 1);
}
}
您必须注意它将删除具有相同名称的数组中的所有值。
使用索引 - 只需在点击按钮上发送数据ID并在该索引上拼接数组
arr.splice(dataid, 1)